GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Custom-C-Indent.html ・ emacs-doc.conao3.com

28.3.5 Cのインデントのカスタマイズ

Cモードおよび関連モードでは、インデントをカスタマイズするための柔軟な仕組みが採用されています。Cモードでは、ソース行のインデントを2段階で行います。まず、行の内容を文脈に基づいて構文的に分類します。次に、選択したスタイルがその構文構造に関連付けているインデントオフセットを決定し、それをアンカーステートメントのインデントに加算します。

C-c . style RET

定義済みスタイル style を選択します(CCモードでは c-set-style、Tree-sitterベースの c-ts-mode では c-ts-mode-set-style)。

スタイルとは、Cモードおよび関連モードで使用できるカスタマイズの名前付きコレクションのことです。詳細な説明については、The CC Mode ManualのStylesを参照してください。Emacsには、gnu、k&r、bsd、stroustrup、linux、python、java、whitesmith、ellemtel、awkなど、いくつかの定義済みスタイルが用意されています。これらのスタイルの中には、主に特定の言語向けに設計されたものもありますが、いずれのスタイルも、これらのモードでサポートされているあらゆる言語で使用可能です。スタイルがどのような見た目になるかを確認するには、そのスタイルを選択し、例えば関数定義の先頭にC-M-qと入力するなどして、コードの一部を再インデントしてください。

現在のバッファにスタイルを選択するには、C-c . コマンドを使用します。引数としてスタイル名を指定してください(大文字・小文字は区別されません)。このコマンドは現在のバッファにのみ適用され、今後のインデントコマンドの実行にのみ影響します。バッファに既に含まれているコードを再インデントすることはありません。バッファ全体を新しいスタイルで再インデントするには、C-x h C-M-\ と入力してください。

CCモードを使用する場合、変数 c-default-style を設定して、さまざまなメジャーモードのデフォルトスタイルを指定することもできます。その値には、スタイル名(文字列)またはアリストを指定します。アリストの各要素では、1つのメジャーモードと、そのモードで使用するインデントスタイルを指定します。例えば、

(setq c-default-style
      '((java-mode . "java")
        (awk-mode . "awk")
        (other . "gnu")))

JavaモードおよびAWKモードの明示的な選択肢と、その他のC系モードのデフォルトスタイルである‘gnu’を指定します。(これらの設定は、実際にはデフォルト設定です。)この変数は、C系メジャーモードのいずれかを選択した際に有効になります。したがって、Javaモードに新しいデフォルトスタイルを指定した場合、既存のJavaモードバッファ内で M-x java-mode と入力することで、そのスタイルを適用させることができます。

Tree-sitterベースのc-ts-modeを使用する場合、変数c-ts-mode-indent-styleをカスタマイズすることでデフォルトのインデントスタイルを設定できます。

gnu スタイルは、GNU Project for C が推奨する書式を指定したものです。推奨スタイルの利用を促すため、これがデフォルトとなっています。

See Indentation Engine Basics in the CC Mode Manual, and Customizing Indentation in the CC Mode Manual, for more information on customizing indentation for C and related modes, including how to override parts of an existing style and how to define your own styles.

スタイルを指定する代わりに、サンプルコードバッファで M-x c-guess と入力することで、Emacs にスタイルを推測させることができます。その後、M-x c-guess-install を用いて、推測されたスタイルを他のバッファに適用できます。詳細については、CC Mode Manual の Guessing the Style を参照してください。