本节描述在小缓冲中执行补全所使用的键映射、命令和用户选项。
此变量的值是小缓冲中用于补全的补全表(see 基础补全函数)。这是一个缓冲区局部变量,保存 completing-read 传递给 try-completion 的内容。由 minibuffer-complete 等小缓冲补全命令使用。
此变量的值是 completing-read 传递给 try-completion 的谓词。该变量也被其他小缓冲补全函数使用。
此变量决定 Emacs 在退出小缓冲前是否要求确认;completing-read 设置此变量,函数 minibuffer-complete-and-exit 在退出前检查其值。若值为 nil,无需确认。若值为 confirm,用户可使用非有效补全的输入退出,但 Emacs 会要求确认。若值为 confirm-after-completion,用户可使用非有效补全的输入退出,但如果用户在执行 minibuffer-confirm-exit-commands 中的任意补全命令后立即提交输入,Emacs 会要求确认。
此变量保存一个命令列表。当 completing-read 的 require-match 参数为 confirm-after-completion 时,如果用户在调用此列表中的任意命令后立即尝试退出小缓冲,Emacs 会要求确认。
此函数至多以单个单词为单位补全小缓冲内容。即使小缓冲内容只有唯一补全项,minibuffer-complete-word 也不会补全超出第一个非单词构成字符的内容。See Syntax Tables。
此函数尽可能补全小缓冲内容。
此函数补全小缓冲内容,若无需确认(即 minibuffer-completion-confirm 为 nil)则退出。若 需要 确认,可通过立即重复执行此命令完成确认 — 该命令被设计为连续执行两次时无需确认。
此函数生成当前小缓冲内容的所有可能补全项列表。它通过调用 all-completions 实现,使用变量 minibuffer-completion-table 的值作为 collection 参数,使用变量 minibuffer-completion-predicate 的值作为 predicate 参数。补全列表会在名为 *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)))
若此变量非 nil,当无法继续补全(下一个字符无法唯一确定)时,补全命令会自动显示可能的补全项列表。
当不要求必须精确匹配某个补全项时,completing-read 使用此值作为局部键映射。默认情况下,该键映射绑定如下:
minibuffer-completion-help
minibuffer-complete-word
minibuffer-complete
并以 minibuffer-local-map 作为父键映射(see Definition of minibuffer-local-map)。
当要求必须精确匹配某个补全项时,completing-read 使用此值作为局部键映射。因此,没有按键绑定到无条件退出小缓冲的命令 exit-minibuffer。默认情况下,该键映射绑定如下:
minibuffer-complete-and-exit
minibuffer-complete-and-exit
并以 minibuffer-local-completion-map 作为父键映射。
这是一个精简键映射,仅取消绑定 SPC;因为文件名可以包含空格。函数 read-file-name 将此键映射与 minibuffer-local-completion-map 或 minibuffer-local-must-match-map 结合使用。
若非 nil,命令 M-< 在光标位于提示结尾之后时会跳转到提示结尾;若光标位于提示结尾处或之前,则跳转到缓冲区开头。若此变量为 nil,该命令行为与 beginning-of-buffer 一致。