默认情况下,Emacs不会缩进预处理器代码。我知道它的历史根源已经过时了。
然而,拥有大量#ifdef unindented的代码很难阅读。
所以我想让emacs自动缩进给我这样的东西:
void myfunc() {
int foo;
#ifdef BAR
printf(foo);
#endif
return foo;
}
而不是我现在得到的东西:
void myfunc() {
int foo;
#ifdef BAR
printf(foo);
#endif
return foo;
}
这个问题的任何线索都是你的黑客:)?
答案 0 :(得分:12)
您可以简单地告诉Emacs向预处理器线添加偏移量。
point
)放入预处理器行Syntactic symbol to change:
,cpp-macro
,按 Enter 0
)然后每个预处理器行上的 TAB 应正确缩进。 (或 M-x indent-region
...)。
要永久更改设置,您可以在.emacs
文件中添加所需的行
复制先前输入的命令的简单方法是 c-x ESC ESC 并使用箭头键查找(c-set-offset ...)
Elisp命令。
那应该是
(c-set-offset (quote cpp-macro) 0 nil)