次: Relative Indent, 前: Mode-Specific Indent, 上: Indentation
本節では、領域内のすべての行を字下げするコマンドについて述べます。 これらは予測できない値を返します。
このコマンドは、start(を含めて)と end(を含めない)のあいだで始まる空でない各行を字下げする。 to-columnが
nil
であると、indent-region
は、現在のモードの字下げ関数、 つまり、indent-line-function
の値を呼び出して、 空でない各行を字下げする。to-columnが
nil
以外であると、 それは字下げ先のコラム番号を指定する整数であること。 すると、この関数は、白文字を追加するか削除して、 各行を指定どおりに字下げする。詰め込み接頭辞がある場合、
indent-region
は詰め込み接頭辞で行を始めることで各行を字下げする。
この変数の値は、
indent-region
の短縮版として利用可能な関数である。 領域の開始位置と終了位置の2つの引数をとる。 領域の行を1つ1つ字下げする場合と同じ結果を生じるが、 より速く動作することを意図してこの関数を設計するべきである。値が
nil
であると短縮版はなく、indent-region
が実際に1行ずつ処理する。短縮版関数はCモードやlispモードのようなモードで有用である。 そのようなモードでは、
indent-line-function
で関数定義の始まりを 走査する必要があり、これを各行に適用すると自乗の時間がかかる。 短縮版では、字下げし終えた関数定義を通過するたびに 走査情報を更新でき、これには線形時間かかるだけである。 個々の行を高速に字下げできるモードでは、短縮版は必要ない。引数to-columnに
nil
以外を指定したindent-region
には 別の意味があり、この変数を使わない。
このコマンドは、start(を含めて)と end(を含めない)のあいだで始まる行すべてを コラム数countだけ字下げする。 これは、領域を1つの塊として動かしてその領域の『形を保つ』。 このコマンドは、字下げしていないテキストの領域だけでなく、 整形済みの領域を字下げするためにも有用である。
たとえば、countが3であると、 このコマンドは指定した領域内の各行の行頭に3コラムの字下げを追加する。
メイル(mail)モードでは、C-c C-y(
mail-yank-original
)が 返信対象のメッセージからコピーしたテキストを字下げするためにindent-rigidly
を使っている。