使用emacs c代码自动换行的结构格式

时间:2012-01-17 17:35:07

标签: c emacs indentation

我最近开始使用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 };

如何让闭合分号与闭括号保持同一直线?

2 个答案:

答案 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时显示)中,最后一行将有一个链接来自定义此变量。