7

emacs の Google フォーマット機能を使用して、すべてのソース ファイルを再フォーマットしたいと考えています: google-c-style.el (こちらを参照)。

この関数をすべてのソース ファイルに一度に適用して、すべてのソース ファイルが Google スタイルに従って正しくフォーマットおよびインデントされるようにするにはどうすればよいですか?

4

4 に答える 4

9

これにはいくつかの要素があります:

  • 必要なすべての再フォーマットを行うには、EMACS 関数を考え出す必要があります。 indent-regionが始まりですが、タブを解除したり、他のことをしたりすることもできます。
  • 各ファイルでそれらを呼び出す必要があり、インデント関数は範囲で機能するため、ファイル全体をカバーするようにマークを設定する関数が必要です: mark-whole-buffer.
  • 各ファイルで EMACS を呼び出す必要があります。これは --batch ファイルで emacs を呼び出すことを意味します。

これを実行するための素敵なブログ投稿がいくつかあります ここここ.

于 2009-04-04T14:46:27.457 に答える
3

私は以前、キーボードで定義されたマクロを使用してこれを行いました。すべてのファイルをemacs(のようなものfind . -name "*.cpp" | xargs emacs)にロードしてから、次のキーを入力します。各キーの組み合わせに、その機能に注釈を付けました。

C-x-(                  'Begin recording macro
M-<                    'Go to start of file
C-space                'Mark current location (now start of file)
M->                    'Go to end of file
M-x indent-region      'Indent entire file according to coding style
C-x C-s                'Save the current buffer
C-x C-k                'Close the current buffer
C-x-)                  'End recording macro

これで、。と入力してバッファでこれを実行できますC-x e。複数のファイルをロードした場合はC-u 100 C-x e、100個のファイルでこれを実行するようなものを実行できます。これがファイルの数を超えている場合、つまり問題がない場合は、すべての処理が完了したら無視できる「ベルリング」またはその他のエラーが発生します。

于 2009-04-06T18:24:27.587 に答える
2

このスクリプトは再フォーマットを行わないと思います。代わりに、次の説明に従ってカスタム「スタイル」を作成する方法の例です: CC モード マニュアル - スタイル

CC モードのマニュアルにも次のように書かれています。

古いコードを再フォーマットしたい場合は、CC モードよりも強力な再フォーマット機能を備えた GNU indent など、代わりに他のツールを使用した方がよいでしょう。

CC モード マニュアル - 制限事項と既知のバグ

于 2009-04-04T14:36:25.017 に答える