我最近开始使用emacs编辑C源代码,并且一直使用cc-mode的自动换行功能(c-toggle-auto-newline)。这适用于像函数和if / else语句这样的结构,但是当一个右大括号后面跟一个分号时,它似乎很奇怪。
在GNU Emacs 23.3中使用auto-newline我得到:
struct foo
{
int x;
}
;
char int[2] =
{
0, 1
}
;
我想改为:
struct foo {
int x;
};
char int[2] = { 0, 1 };
如何让闭合分号与闭括号保持同一直线?
答案 0 :(得分:1)
我不认为你可以通过自动换行解决这个问题。它不是一个经过深思熟虑的功能,它只是在某些字符(;
,{
等)之后插入换行符。但严重的是,按键输入密钥有多难?任何自动化总是容易出错。
答案 1 :(得分:0)
您可以在启用自动换行时自定义“清理”行为。这由c-cleanup-list
变量的内容控制。 (通过输入C-h v c-cleanup-list
在Emacs中查看此帮助。
具体而言,将defun-close-semi
添加到c-cleanup-list
将解决您的问题。
如果您已经在~/.emacs
文件中定义了自定义样式,那么您可能会想出如何执行此操作。否则,更改此设置的最简单方法是通过Customize
。在帮助缓冲区(运行C-h v c-cleanup-list
时显示)中,最后一行将有一个链接来自定义此变量。