このセクションではリージョン内すべての行をインデントするコマンドを説明します。これらは予期せぬ値をリターンします。
このコマンドは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モードのようなモードにたいして有用であり、それを各行に適用するためには行数の2乗に比例する時間を要するだろう。ショートカットは各行のインデントとともに移動してスキャン情報を更新でき、それは線形時間である。行を個別にインデントするのが高速なモードではショートカットの必要性はない。
引数to-columnが非nil
のindent-region
では意味は異なり、この変数は使用しない。
この関数はstart (含む)からend (含まず)までのすべての行を横にcount列インデントする。これは影響を受けるリージョンの外観を保ち、それを厳密な単位として移動する。
これはインデントされていないテキストリージョンのインデントだけでなく、フォーマット済みコードのリージョンにたいするインデントにも有用。たとえばcountが3なら、このコマンドは指定されたリージョン内で始まるすべての行のインデントに3を追加する。
プレフィクス引数なしでインタラクティブに呼び出された場合には、このコマンドはインデントを厳密に調整するためにTransient Markモードを呼び出す。Indentation Commands in The GNU Emacs Manualを参照のこと。
これはindent-rigidly
と似ているが文字列やコメントで始まる行を変更しない点が異なる。
加えて( nochange-regexpが非nil
なら)
nochange-regexpが行先頭にマッチする場合にはその行を変更しない。