【问题标题】:Emacs indentation of the for each statement in C++C++ 中每个语句的 Emacs 缩进
【发布时间】:2009-04-08 21:35:17
【问题描述】:

我正在尝试让 emacs 正确格式化 c++ 中的“for each”构造。

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

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 时,我看到 @ 987654326@等于0。

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

【问题讨论】:

    标签: c++ emacs foreach indentation


    【解决方案1】:

    据推测,emacs 没有将“for each”识别为 c++ 语法(我也不识别。这是 microsoft 扩展吗?预处理器 hack?即将到来的标准的新功能?)。所以难怪它的格式不“正确”。

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


    来自 cmets 我的括号内问题的答案是:

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

    slink's answer 看来,模式维护者在最新版本中支持 Microsoft 语法...

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我使用的是 emacs 22.3.1,因为那是 Windows 上的最新版本。不过很好。
    • 我使用的是最新版本的 cc-mode (5.31.6)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2011-04-12
    相关资源
    最近更新 更多