この節では、前の行の内容に基づいて現在の行をインデントする2つのコマンドについて説明します。
このコマンドはポイントに空白を挿入し、直前の非空白行の次のインデントポイントと同じ列まで拡張します。インデントポイントとは、空白に続く非空白文字のことです。次のインデントポイントとは、ポイントの現在の列よりも右側にある最初のインデントポイントのことです。例えば、ポイントがテキスト行の最初の非空白文字の下方かつ左側にある場合、空白を挿入することでその列に移動します。
直前の非空白行に次のインデント位置がない場合(すなわち、十分に右側の列位置に位置がない場合)、indent-relative は何も行わない(unindented-ok が nil でない場合)か、あるいは
tab-to-tab-stop
を呼び出す。したがって、ポイントが短いテキスト行の最終列の下方かつ右側にある場合、このコマンドは通常、空白を挿入することでポイントを次のタブストップに移動させる。
first-only が nil
でない場合、最初のインデントポイントのみが考慮されます。
indent-relative の戻り値は予測できません。
以下の例では、pointは2行目の先頭にあります:
This line is indented twelve spaces. ∗The quick brown fox jumped.
式 (indent-relative nil) を評価すると、以下のようになります。
This line is indented twelve spaces.
∗The quick brown fox jumped.
次の例では、pointは‘jumped’の‘m’と‘p’の間にあります:
This line is indented twelve spaces. The quick brown fox jum∗ped.
式 (indent-relative nil) を評価すると、以下のようになります。
This line is indented twelve spaces. The quick brown fox jum ∗ped.
このコマンドは、tをfirst-onlyの引数としてindent-relativeを呼び出すことで、現在の行を直前の非空白行と同様にインデントします。戻り値は予測不能です。
直前の非空白行に、現在の列より先にインデントポイントがない場合、このコマンドは何も行いません。