33.17.4 相对前一行的缩进

本节介绍两个基于前一行内容对当前行进行缩进的命令。

Command: indent-relative &optional first-only unindented-ok

该命令在光标处插入空白,延伸至前一个非空行的下一个缩进点(indent point)所在列。 缩进点指空白字符之后的第一个非空白字符。 下一个缩进点是列号大于当前光标列的第一个缩进点。 例如,如果光标位于某行文本第一个非空白字符的左下方,它会插入空白将光标移至该列。

如果前一个非空行没有下一个缩进点(即没有足够大列号的缩进点), indent-relative 要么不做任何操作(如果 unindented-oknil), 要么调用 tab-to-tab-stop。 因此,如果光标位于某一短行最后一列的右下方,该命令通常会插入空白,将光标移至下一个制表位。

如果 first-onlynil,则只考虑第一个缩进点。

indent-relative 的返回值无确定意义。

在下例中,光标位于第二行开头:

            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.

在下例中,光标位于 ‘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.
Command: indent-relative-first-indent-point

该命令通过以 t 作为 first-only 参数调用 indent-relative, 使当前行与前一个非空行保持相同缩进。返回值无确定意义。

如果前一个非空行在当前列之后没有缩进点,该命令不执行任何操作。