21.6.3 执行补全的小缓冲命令

本节描述在小缓冲中执行补全所使用的键映射、命令和用户选项。

Variable: minibuffer-completion-table

此变量的值是小缓冲中用于补全的补全表(see 基础补全函数)。这是一个缓冲区局部变量,保存 completing-read 传递给 try-completion 的内容。由 minibuffer-complete 等小缓冲补全命令使用。

Variable: minibuffer-completion-predicate

此变量的值是 completing-read 传递给 try-completion 的谓词。该变量也被其他小缓冲补全函数使用。

Variable: minibuffer-completion-confirm

此变量决定 Emacs 在退出小缓冲前是否要求确认;completing-read 设置此变量,函数 minibuffer-complete-and-exit 在退出前检查其值。若值为 nil,无需确认。若值为 confirm,用户可使用非有效补全的输入退出,但 Emacs 会要求确认。若值为 confirm-after-completion,用户可使用非有效补全的输入退出,但如果用户在执行 minibuffer-confirm-exit-commands 中的任意补全命令后立即提交输入,Emacs 会要求确认。

Variable: minibuffer-confirm-exit-commands

此变量保存一个命令列表。当 completing-readrequire-match 参数为 confirm-after-completion 时,如果用户在调用此列表中的任意命令后立即尝试退出小缓冲,Emacs 会要求确认。

Command: minibuffer-complete-word

此函数至多以单个单词为单位补全小缓冲内容。即使小缓冲内容只有唯一补全项,minibuffer-complete-word 也不会补全超出第一个非单词构成字符的内容。See Syntax Tables

Command: minibuffer-complete

此函数尽可能补全小缓冲内容。

Command: minibuffer-complete-and-exit

此函数补全小缓冲内容,若无需确认(即 minibuffer-completion-confirmnil)则退出。若 需要 确认,可通过立即重复执行此命令完成确认 — 该命令被设计为连续执行两次时无需确认。

Command: minibuffer-completion-help

此函数生成当前小缓冲内容的所有可能补全项列表。它通过调用 all-completions 实现,使用变量 minibuffer-completion-table 的值作为 collection 参数,使用变量 minibuffer-completion-predicate 的值作为 predicate 参数。补全列表会在名为 *Completions* 的缓冲区中显示。

Function: display-completion-list completions

此函数将 completions 显示到 standard-output 流,通常是一个缓冲区。(有关流的更多信息,参见 see Lisp 对象的读取与打印。)参数 completions 通常是刚由 all-completions 返回的补全列表,但并非必须如此。每个元素可以是符号或字符串,直接打印即可。也可以是包含两个字符串的列表,打印效果如同字符串拼接。两个字符串中,第一个是实际补全内容,第二个作为注释。

此函数由 minibuffer-completion-help 调用。常见用法是与 with-output-to-temp-buffer 配合使用,示例:

(with-output-to-temp-buffer "*Completions*"
  (display-completion-list
    (all-completions (buffer-string) my-alist)))
User Option: completion-auto-help

若此变量非 nil,当无法继续补全(下一个字符无法唯一确定)时,补全命令会自动显示可能的补全项列表。

Variable: minibuffer-local-completion-map

当不要求必须精确匹配某个补全项时,completing-read 使用此值作为局部键映射。默认情况下,该键映射绑定如下:

?

minibuffer-completion-help

SPC

minibuffer-complete-word

TAB

minibuffer-complete

并以 minibuffer-local-map 作为父键映射(see Definition of minibuffer-local-map)。

Variable: minibuffer-local-must-match-map

当要求必须精确匹配某个补全项时,completing-read 使用此值作为局部键映射。因此,没有按键绑定到无条件退出小缓冲的命令 exit-minibuffer。默认情况下,该键映射绑定如下:

C-j

minibuffer-complete-and-exit

RET

minibuffer-complete-and-exit

并以 minibuffer-local-completion-map 作为父键映射。

Variable: minibuffer-local-filename-completion-map

这是一个精简键映射,仅取消绑定 SPC;因为文件名可以包含空格。函数 read-file-name 将此键映射与 minibuffer-local-completion-mapminibuffer-local-must-match-map 结合使用。

Variable: minibuffer-beginning-of-buffer-movement

若非 nil,命令 M-< 在光标位于提示结尾之后时会跳转到提示结尾;若光标位于提示结尾处或之前,则跳转到缓冲区开头。若此变量为 nil,该命令行为与 beginning-of-buffer 一致。


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike