1

我试图让emacs正确格式化C++中的“for each”构造。

在以下两个示例中,我希望大括号与fin对齐:for

for each(Type a in b)
        { //^c^s shows substatement-open
            //... do stuff
        }

for( ; ; )
{ //^c^s shows substatement-open
    //... do stuff
}

在这两种情况下,使用 [Ctrl-c Ctrl-s](或 [Ctrl-c Ctrl-o])显示两个开头的 { 字符都是类型substatement-open,并且在查看时c-offsets-alist我看到substatement-open等于 0。

如何使 emacs 缩进for each()命令类似于它如何缩进for(;;)命令?

4

2 回答 2

6

大概emacs没有将“ for each”识别为c ++语法(我也不识别。这是微软扩展吗?预处理器黑客?即将到来的标准的新功能?)。所以难怪它没有“正确”地格式化它。

您可以破解该模式,或询问相同的维护者(不过,我不希望得到积极的回应,除非这将是正确的 c++ 现在很快)。


从评论我的括号问题的答案是:

  • OP 询问的确切形式是 Microsoft managed-c++ 扩展。
  • 现在有BOOST_FOREACH可用的
  • C++0x 支架将包括一个容器范围的循环,其语法如下for( <type> <loopcounter> : <container> )

slink 的回答看来,模式维护者在最新版本中支持 Microsoft 语法......

于 2009-04-08T21:45:33.047 回答
2

对我来说——在 Emacs 23.0.91 下——c++-mode缩进for each块,因为它是一个正常的for循环。

于 2009-04-09T08:45:10.340 回答