emacs批量缩进与cc模式访问标签

时间:2012-12-05 03:17:21

标签: emacs batch-file cc-mode

我正在尝试使用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:

我想将这些关键字与前面的左括号对齐。基于this question我认为设置'access-label'会解决这个问题,但它似乎没有任何影响。

我错过了什么?

1 个答案:

答案 0 :(得分: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)
)