このセクションでは、リージョン内の全行をインデントするコマンドについて説明します。これらのコマンドは予測不能な値を返します。
このコマンドは、start(含む)からend(含まない)までの範囲で、各非空白行をインデントします。to-columnがnilである場合、indent-regionは現在のモードのインデント関数であるindent-line-functionの値を呼び出すことで、各非空白行をインデントします。
to-column が nil
でない場合、それはインデントの列数を指定する整数である必要があります。この関数は、空白文字を追加または削除することで、各行にちょうどその分だけのインデントを付与します。
フィルプレフィックスがある場合、indent-region
は各行をそのフィルプレフィックスで始めることでインデントします。
この変数の値は、indent-region
がショートカットとして利用できる関数です。領域の開始位置と終了位置の2つの引数を取る必要があります。領域の各行を1行ずつインデントした場合と同じ結果が得られるよう、ただしおそらくより高速に動作するように関数を設計してください。
値が nil の場合はショートカットはなく、indent-region は実際に1行ずつ処理されます。
ショートカット機能は、indent-line-function
が関数定義の先頭からスキャンする必要がある C モードや Lisp
モードなどで有用です。各行にこの機能を適用すると、計算時間が二次的に増大します。ショートカット機能は、行をインデントしながらスキャン情報を更新できるため、線形時間で処理できます。行を個別にインデントする処理が高速なモードでは、ショートカット機能は不要です。
indent-region に nil
以外の引数 to-column が指定された場合は別の意味となり、この変数は使用されません。
この関数は、start(含む)からend(含まない)までの範囲で始まるすべての行を、count列分横方向にインデントします。これにより、影響を受ける領域の形状が維持され、剛性体として移動します。
これは、インデントされていないテキストの領域をインデントするだけでなく、書式設定されたコードの領域をインデントする場合にも有用です。例えば、count が 3 の場合、このコマンドは指定した領域で始まるすべての行に 3 列分のインデントを追加します。
接頭辞引数なしで対話的に呼び出された場合、このコマンドはインデントを厳格に調整するための一時モードを起動します。The GNU Emacs Manualのインデントコマンドを参照してください。
これは indent-rigidly に似ていますが、文字列やコメント内で始まる行は変更しません。
さらに、行頭で nochange-regexp がマッチする場合(nochange-regexp が nil
でない場合)、その行は変更されません。