次: , 前: Indentation Calculation, 上: Custom C Indent


20.5.5.3 字下げスタイルの変更

C流のモードの字下げをカスタマイズする方法は2つあります。 1つは、あらかじめ定義されているスタイルから選択する方法です。 それぞれのスタイルでは、各構文シンボルに対するオフセットが定められています。 もう1つはより柔軟な方法で、各構文シンボルの扱い方をカスタマイズできます。 定義されている構文シンボルの一覧については、See Syntactic Symbols

M-x c-set-style <RET> style <RET>
あらかじめ定義されている字下げスタイルstyleを選択する。 styleを入力する際に?と打てば、 定義済みのスタイル一覧を見ることができる。 スタイルの見栄えを調べるには、 そのスタイルを選択して、適当なCのコードを字下げし直してみる。
C-c C-o symbol <RET> offset <RET>
構文シンボルsymbolに対する字下げのオフセットを設定する (c-set-offset)。 2番目の引数offsetで、字下げのオフセットを指定する。

変数c-offsets-alistは、各構文シンボルに与える字下げ量を制御します。 この変数の値は連想リストであり、 各要素は(syntactic-symbol . offset)の形をしています。 さまざまな構文シンボルに対するオフセットを変えることで、 字下げを細かくカスタマイズできます。 連想リストを変更するには、c-set-offsetを使います(下記参照)。

c-offsets-alist内の各オフセットには、 整数、関数名や変数名、あるいは、 変数c-basic-offsetの値の正負の倍数を表すシンボルである +-++--*/のいずれかを設定できます。 したがって、基本の字下げ幅を空白2文字から3文字に変更したければ、 c-basic-offsetに3を設定します。

オフセットに関数を用いると、 字下げのカスタマイズに究極の柔軟性を持たせられます。 この関数は、構文シンボルとバッファ内位置があればそれをconsしたものを 引数として呼ばれます。 戻り値としては、整数値のオフセットを返す必要があります。

オフセットの値がリストの場合、 各要素は、nil以外の値がみつかるまで上の規則にしたがって処理されます。 その後、その値は、通常のように、字下げの総量に加えられます。 これは、主に、複数の関数の結果を組み合わせるために使われます。

対話的に設定するにしてもファイル~/.emacsで設定するにしても、 オフセットを設定するもっとも簡単な方法は、 コマンドC-c C-oc-set-offset)を使うことです。 最初の引数は構文シンボル、2番目の引数は希望のオフセットです。 有効な構文シンボル名とその意味の一覧は、See Syntactic Symbols