1

我正在尝试使用 emacs 批量缩进源文件。我正在使用命令:

$ emacs -batch Source.h -l emacs-format-file.el -f emacs-format-function

其中 emacs-format-file.el 包含:

(defun emacs-format-function ()
 (c-set-style "gnu")
 (setq c-basic-offset 4)
 (c-set-offset 'access-label nil)
 (c-set-offset 'substatement-open 0)
 (indent-region (point-min) (point-max) nil)
 (untabify (point-min) (point-max))
 (save-buffer)
)

Emacs 根据我的喜好缩进文件,但有一个例外。“public”、“private”和“protected”关键字都缩进了一个额外的空格:

 class Foo
 {
-public:
+ public:

我想将这些关键字与前面的左括号对齐。基于这个问题,我认为设置“访问标签”可以解决这个问题,但它似乎没有任何效果。

我错过了什么?

4

1 回答 1

1

事实证明,emacs 将头文件作为 C 而不是 C++ 处理。修复方法是更改​​ .el 文件以手动切换到 C++ 模式:

(defun c++-indent-region ()
  (c++-mode)
  (c-set-style "gnu")
  (setq c-basic-offset 4)
  (indent-region (point-min) (point-max) nil)
  (untabify (point-min) (point-max))
  (save-buffer)
)
于 2012-12-05T20:48:34.820 回答