Cおよび関連するモードのインデントのために、特別な機能があります。
カレントのトップレベル関数を再インデント、または型定義を統合します(CCモードではc-indent-defun
、tree-sitterベースのc-ts-mode
ではc-ts-mode-indent-defun
)。
ポイントの後の、釣り合いの取れた式(対応が取れたカッコの式を参照)の中の各行を再インデントします(c-indent-exp
)。これはCCモードではc-indent-exp
、tree-sitterベースのc-ts-mode
ではより汎用的なprog-indent-sexp
を呼び出します。プレフィックス引数を指定すると、無効な構文(invalid
syntax)に関する警告メッセージを抑止します。
カレント行、アクティブなリージョン、その行は始点となるブロックを再インデントします(c-indent-command
)。プレフィックス引数を指定すると、もしカレント行の再インデントが必要なら、カレント行を起点に釣り合いの取れた式を厳格に再インデントします
c-tab-always-indent
がt
の場合、このコマンドは常にカレント行をインデントし、他には何もしません。これがデフォルトです。
この変数がnil
の場合、このコマンドはポイントが左端か、その行のインデント位置にある場合だけ、カレント行を再インデントします。そうでない場合、このコマンドはタブ(indent-tabs-mode
がnil
の場合は等価な数のスペース)を挿入します。
(nil
でもt
でもない)他の値の場合、常にその行をインデントし、コメントか文字列の中の場合は、タブも挿入します。
カレントバッファー全体を再インデントするには、C-x h C-M-\とタイプします。これは最初にバッファー全体をリージョンとして選択し、それからリージョンを再インデントします。
カレントブロックを再インデントするには、C-M-u C-M-qを使用します。これはブロックの前に移動してから、ブロックのすべてを再インデントします。