21.6.6 补全相关变量

下面是一些可用于改变默认补全行为的变量。

User Option: completion-styles

该变量的值是一个补全风格(符号)列表,用于执行补全操作。 补全风格(completion style)是一组用于生成补全项的规则。 列表中的每个符号都必须在 completion-styles-alist 中有对应的条目。

Variable: completion-styles-alist

该变量存储可用的补全风格列表。 列表中的每个元素具有以下形式:

(style try-completion all-completions doc)

其中,style 是补全风格的名称(一个符号), 可在 completion-styles 变量中使用以指代该风格; try-completion 是执行补全的函数; all-completions 是列出补全项的函数; doc 是描述该补全风格的字符串。

try-completionall-completions 函数 均应接受四个参数:stringcollectionpredicatepoint。 参数 stringcollectionpredicate 的含义与 try-completion 中相同(see 基础补全函数), 参数 point 是光标在 string 中的位置。 每个函数在完成自身工作时应返回非 nil 值, 无法完成时返回 nil(例如,按照该补全风格无法对 string 进行补全)。

当用户调用诸如 minibuffer-complete 之类的补全命令时(see 执行补全的小缓冲命令), Emacs 会查找 completion-styles 中列出的第一个风格,并调用其 try-completion 函数。 如果该函数返回 nil,Emacs 会转向列表中的下一个补全风格并调用其 try-completion 函数, 依此类推,直到某个 try-completion 函数成功执行补全并返回非 nil 值。 列出补全项时也会通过 all-completions 函数采用类似流程。

有关可用补全风格的说明,参见 Completion Styles in The GNU Emacs Manual

User Option: completion-category-overrides

该变量指定在对特定类型文本进行补全时所使用的特殊补全风格及其他补全行为。 其值应为一个 alist,元素形式为 (category . alist)category 是一个符号,描述正在补全的内容类型; 目前已定义的类别有 bufferfileunicode-name, 但也可以通过专用补全函数定义其他类别(see 可编程补全)。 alist 是一个关联列表,描述对应类别下补全应如何行为。 支持的 alist 键如下:

styles

值应为一个补全风格(符号)列表。

cycle

值应为该类别对应的 completion-cycle-threshold 值 (see Completion Options in The GNU Emacs Manual)。

cycle-sort-function

循环补全时用于排序条目的函数。

display-sort-function

*Completions* 缓冲区中对条目排序的函数。 可选值包括:nil,表示使用元数据中的排序函数, 若元数据中为 nil 则回退到 completions-sortidentity,表示完全不排序,保留原始顺序; 或 completions-sort 中使用的其他值 (see Completion Options in The GNU Emacs Manual)。

group-function

对补全项进行分组的函数。

annotation-function

为补全项添加注释的函数。

affixation-function

为补全项添加前缀和后缀的函数。

完整的元数据条目列表参见 可编程补全

Variable: completion-extra-properties

该变量用于指定当前补全命令的额外属性。 它旨在由专用补全命令通过 let 绑定使用。 其值应为属性与值成对组成的列表。支持以下属性:

:category

值应为一个符号,描述补全函数试图补全的文本类型。 如果该符号与上述 completion-category-overrides 中的某个键匹配, 则覆盖常规的补全行为。

:annotation-function

值应为一个在补全缓冲区中添加注释的函数。 该函数必须接受一个参数(补全项), 并返回 nil 或一个显示在补全项旁边的字符串。 除非该函数自行对注释后缀字符串设置 face, 否则默认会为该字符串应用 completions-annotations face。

:affixation-function

值应为一个为补全项添加前缀和后缀的函数。 该函数必须接受一个参数(补全项列表), 并返回一个带注释的补全项列表。 返回列表中的每个元素必须是一个三元素列表: 补全项、前缀字符串、后缀字符串。 该函数优先级高于 :annotation-function

:group-function

对补全项进行分组的函数。

:display-sort-function

*Completions* 缓冲区中对条目排序的函数。

:cycle-sort-function

循环补全时用于排序条目的函数。

:exit-function

值应为执行补全后运行的函数。 该函数应接受两个参数:stringstatus。 其中 string 是字段补全后的文本, status 表示所发生的操作类型: finished 表示文本已补全完成; sole 表示文本无法进一步补全但补全过程尚未结束; exact 表示文本是合法补全项但仍可继续补全。


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike