将预处理程序指令缩进为emacs中的C代码
默认情况下,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; }
这个问题的任何线索你emacs黑客:)?
您可以简单地告诉Emacs向预处理器线添加偏移量。
- 将光标(
point
)放在预处理器行中 - 然后按Cc Co (control-c control-o)
- 迷你缓冲区应该说
Syntactic symbol to change:
- 键入
cpp-macro
,按Enter键 - 输入新的偏移量(数字 – 通常为
0
)
然后每个预处理器行上的TAB应正确缩进。 (或Mx indent-region
……)。
要永久更改设置,您可以在.emacs
文件中添加所需的行。
复制先前输入的命令的简单方法是cx ESC ESC并使用箭头键查找(c-set-offset ...)
Elisp命令。
那应该是
(c-set-offset (quote cpp-macro) 0 nil)