Next: , Previous: , Up: Indentation   [Contents][Index]


31.17.3 リージョン全体のインデント

このセクションではリージョン内すべての行をインデントするコマンドを説明します。これらは予期せぬ値をリターンします。

Command: indent-region start end &optional to-column

このコマンドはstart (含む)からend (含まず)で始まる非ブランク行すべてをインデントする。to-columnnilならindent-regionはカレントモードのインデント関数、すなわちindent-line-functionの値を呼び出すことにより非ブランク行すべてをインデントする。

to-columnが非nilなら、それはインデントの列数を指定する整数であること。その場合には、この関数は空白文字を追加か削除することにより正確にその量のインデントを各行に与える。

フィルプレフィクスがある場合には、indent-regionはそのフィルプレフィクスで開始されるように各行をインデントする。

Variable: indent-region-function

この変数の値はショートカットとしてindent-regionにより使用されるかもしれない関数。その関数はリージョンの開始と終了という2つの引数を受け取ること。その関数はリージョンの行を1行ずつインデントするときと同じような結果を生成するようにデザインするべきだが、おそらくより高速になるであろう。

値がnilならショートカットは存在せずindent-regionは実際に1行ずつ機能する。

ショートカット関数はindent-line-functionが関数定義先頭をスキャンしなければならないCモードやLispモードのようなモードにたいして有用であり、それを各行に適用するためには行数の2乗に比例する時間を要するだろう。ショートカットは各行のインデントとともに移動してスキャン情報を更新でき、それは線形時間である。行を個別にインデントするのが高速なモードではショートカットの必要性はない。

引数to-columnが非nilindent-regionでは意味は異なり、この変数は使用しない。

Command: indent-rigidly start end count

この関数は、start(含む)からend(含まず)までのすべての行を、横にcount列インデントする。これは影響を受けるリージョンの“外観を保ち”、それを厳密な単位として移動する。

これはインデントされていないテキストリージョンのインデントだけでなく、フォーマット済みコードのリージョンにたいするインデントにも有用。たとえばcountが3なら、このコマンドは指定されたリージョン内で始まるすべての行のインデントに3を追加する。

プレフィクス引数なしでインタラクティブに呼び出された場合には、このコマンドはインデントを厳密に調整するためにTransient Markモードを呼び出す。Indentation Commands in The GNU Emacs Manualを参照のこと。

Command: indent-code-rigidly start end columns &optional nochange-regexp

これはindent-rigidlyと似ているが文字列やコメントで始まる行を変更しない点が異なる。

加えて( nochange-regexpが非nilなら) nochange-regexpが行先頭にマッチする場合にはその行を変更しない。