Emacs中的CC模式分配缩进

时间:2017-09-21 14:34:29

标签: c++ emacs indentation

我正在用Emacs CC模式编写一个C ++程序,当我编写一个需要换行的表达式时,如何在这个等号的右侧创建换行符:

// Aligned
abc = longlonglong + longlonglong +
      longlonglong;

// The actual situation
abc = longlonglong + longlonglong +
    longlonglong; 

借助StackOverflow的提示,我尝试了几种方法来自定义statement-cont变量,但只有一种方法有效 - 在~/.emacs中添加了以下代码:

(c-add-style "Stroustrup"
     '((c-basic-offset . 4)
       (c-offsets-alist
    (statement-cont . c-lineup-assignments))))

我发现google-c-style.el的设置如下:

    (c-offsets-alist . ((arglist-intro google-c-lineup-expression-plus-4)
                    ...
                    (statement-cont
                     .
                     (,(when (fboundp 'c-no-indent-after-java-annotations)
                         'c-no-indent-after-java-annotations)
                      ,(when (fboundp 'c-lineup-assignments)
                         'c-lineup-assignments)
                      ++))
                    ...
                    (innamespace . 0))))

谁能告诉我这段代码的含义?

因为我只想将c-lineup-assignments应用于公式,所以我将设置参考更新为google风格的代码:

(c-add-style "Stroustrup"
     '((c-basic-offset . 4)
       (c-offsets-alist 
    (statement-cont . (when (looking-at "=")
                'c-lineup-assignments
                '+)))))

但是当我运行cc-mode时,Emacs说符号声明的无效缩进设置:... ,所以如果我只想将c-lineup-assignments应用于方程式,我该如何更改此代码?

1 个答案:

答案 0 :(得分:1)

您正在寻找c-lineup-assignments的{​​{1}}。将光标放在延续线上,当您可以键入 C-c C-o (或cc-align以修改密钥时),它应自动填充c-set-offset。点击返回并将其值设置为c-statement-cont