33.12 填充边距

User Option: fill-prefix

该缓冲区局部变量若不为 nil,则指定一段出现在普通文本行开头的字符串, 在执行填充时应忽略该部分内容。任何不以填充前缀开头的行都会被视为段落的起始; 以填充前缀开头且其后带有额外空白的行同样如此。仅以填充前缀开头、无额外空白的行 为可参与填充的普通文本行。填充完成后的行同样会以该填充前缀开头。

填充前缀位于左侧边距空白(若存在)之后。

User Option: fill-column

该缓冲区局部变量指定填充后行的最大宽度。其值应为一个整数,代表列数。 所有填充、对齐与居中命令均受此变量影响,包括自动填充模式(see 自动换行)。

实际使用中,若你编写的文本供他人阅读,应将 fill-column 设置为不超过 70。 否则行宽过长会导致阅读不适,使文本显得杂乱。

fill-column 的默认值为 70。若要在特定模式中禁用自动填充模式,可使用类似代码:

(add-hook 'foo-mode-hook (lambda () (auto-fill-mode -1))
Command: set-left-margin from to margin

该命令将从 fromto 文本的 left-margin 属性设为 margin。 若启用了自动填充模式,该命令还会重新填充该区域以适配新的左侧边距。

Command: set-right-margin from to margin

该命令将从 fromto 文本的 right-margin 属性设为 margin。 若启用了自动填充模式,该命令还会重新填充该区域以适配新的右侧边距。

Function: current-left-margin

该函数返回用于填充光标所在位置文本的合适左侧边距值。该值为当前行首字符的 left-margin 属性(若无则为 0)与变量 left-margin 的值之和。

Function: current-fill-column

该函数返回用于填充光标所在位置文本的合适填充列值。该值为变量 fill-column 的值减去光标后字符的 right-margin 属性值。

Command: move-to-left-margin &optional n force

该函数将光标移至当前行的左侧边距处。目标列由调用 current-left-margin 函数确定。 若参数 n 不为 nilmove-to-left-margin 会先向前移动 n−1 行。

force 不为 nil,则表示当行缩进与左侧边距值不匹配时对其进行修正。

Function: delete-to-left-margin &optional from to

该函数移除从 fromto 文本的左侧边距缩进。需删除的缩进量由调用 current-left-margin 确定。该函数在任何情况下都不会删除非空白字符。 若省略 fromto,则默认作用于整个缓冲区。

Function: indent-to-left-margin

该函数将当前行开头的缩进调整为变量 left-margin 指定的值。 (可能需要插入或删除空白字符。)该函数是段落缩进文本模式中 indent-line-function 的值。

User Option: left-margin

该变量指定基础左侧边距列数。在基本模式中,RET 会缩进至该列。 无论以何种方式设置,该变量都会自动变为缓冲区局部变量。

User Option: fill-nobreak-predicate

该变量为主模式提供一种指定在特定位置不换行的方式。其值应为一个函数列表。 每当填充操作考虑在缓冲区某位置换行时,都会依次调用这些函数,调用时无参数且光标位于该位置。 若任意函数返回非 nil,则不会在此处换行。