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 は、1 つの例外を除いて、私の好みに合わせてファイルをインデントします。"public"、"private"、および "protected" キーワードはすべて余分なスペースでインデントされています。

 class Foo
 {
-public:
+ public:

これらのキーワードを前の開き括弧に合わせたいと思います。この質問に基づいて、 「アクセスラベル」を設定するとこれが修正されると思いましたが、効果はないようです。

私は何が欠けていますか?

4

1 に答える 1

1

emacs はヘッダー ファイルを C++ ではなく C として処理していたことが判明しました。修正は、手動で C++ モードに切り替えるように .el ファイルを変更することでした。

(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 に答える