我正在用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
应用于方程式,我该如何更改此代码?
答案 0 :(得分:1)
您正在寻找c-lineup-assignments
的{{1}}。将光标放在延续线上,当您可以键入 C-c C-o (或cc-align
以修改密钥时),它应自动填充c-set-offset
。点击返回并将其值设置为c-statement-cont
。