次: , 前: Primitive Indent, 上: Indentation


31.17.2 メジャーモードの制御による字下げ

各メジャーモードの重要な機能は、 キー<TAB>を編集対象の言語に適した字下げにカスタマイズすることです。 本節では、キー<TAB>の機構とそれを制御する方法について述べます。 本節の関数は、予測できない値を返します。

— 変数: indent-line-function

この変数の値は、現在行を字下げするために <TAB>(やさまざまなコマンド)が使う関数である。 コマンドindent-according-to-modeは、 この関数を呼ぶこと以上のことはしない。

lispモードでは値はシンボルlisp-indent-line、 Cモードではc-indent-line、 fortranモードではfortran-indent-lineである。 標準的な字下げがない基本(fundamental)モード、 テキスト(text)モード、他の多くのモードでは、 値はindent-to-left-margin(デフォルト値)である

— コマンド: indent-according-to-mode

このコマンドは、現在のメジャーモードに適した方法で現在行を字下げするために indent-line-functionで指定される関数を呼び出す。

— コマンド: indent-for-tab-command

このコマンドは、現在行を字下げするために indent-line-functionで指定される関数を呼び出すが、 その関数がindent-to-left-marginであると、 かわりにinsert-tabを呼び出す。 (これはタブ文字を挿入する単純なコマンドである。)

— コマンド: newline-and-indent

この関数は、改行を挿入してから、 (改行を挿入したばかりの行に続く)新たな行を メジャーモードに基づいて字下げする。

現在のindent-line-functionを呼び出して字下げを行う。 プログラム言語向けのモードでは、これは<TAB>が行うことと同じであるが、 <TAB>がタブを挿入するテキスト向けのモードの一部では、 newline-and-indentleft-marginで指定されたコラムに字下げする。

— コマンド: reindent-then-newline-and-indent

このコマンドは、現在行を字下げし直し、ポイント位置に改行を挿入し、 (改行を挿入したばかりの行に続く)新たな行を字下げする。

このコマンドは、indent-line-functionの現在の値を呼び出すことで、 どちらの行も現在のメジャーモードに基づいて字下げする。 プログラム言語向けのモードでは、これは<TAB>が行うことと同じであるが、 <TAB>がタブを挿入するテキスト向けのモードの一部では、 reindent-then-newline-and-indentは、 left-marginで指定されるコラムに字下げする。