interactive 的代码字符 ¶下面的代码字符说明中包含若干关键词,其定义如下:
提供补全功能。TAB、SPC 和 RET 执行名称补全,
因为参数是通过 completing-read 读取的(see 补全)。
? 显示可能的补全列表。
要求输入已有对象的名称。不接受无效名称; 如果当前输入不合法,退出小缓冲的命令不会生效。
如果用户在小缓冲中未输入任何内容,则使用某种默认值。 默认值取决于代码字符。
该代码字符不读取任何输入即可计算出参数。 因此,它不使用提示字符串,你提供的任何提示字符串都会被忽略。
即使该代码字符不使用提示字符串,如果它不是字符串中的最后一个代码字符, 你仍必须在其后跟随一个换行符。
代码字符后紧跟提示信息。提示在字符串结束或换行符处结束。
该代码字符仅在交互式字符串开头有意义,且不寻找提示或换行符。 它是一个单独的、独立的字符。
以下是可用于 interactive 的代码字符说明:
如果当前缓冲区为只读,则发出错误信号。特殊。
选中调用该命令的按键序列中第一个鼠标事件所对应的窗口。特殊。
如果命令是通过 Shift 转换调用的,则在运行命令前设置标记并临时激活区域, 或扩展已激活的区域。 如果命令不是通过 Shift 转换调用,且区域处于临时激活状态, 则在运行命令前取消激活区域。特殊。
函数名(即满足 fboundp 的符号)。已存在、补全、提示。
已有缓冲区的名称。默认使用当前缓冲区的名称(see 缓冲区)。 已存在、补全、默认值、提示。
缓冲区名称。缓冲区不必存在。默认使用当前缓冲区以外最近使用的缓冲区名称。 补全、默认值、提示。
字符。光标不会移入回显区。提示。
命令名(即满足 commandp 的符号)。已存在、补全、提示。
光标位置,以整数表示(see Point)。无输入输出(No I/O)。
目录。默认值为当前缓冲区的当前默认目录 default-directory(see 文件名展开相关函数)。
已存在、补全、默认值、提示。
调用该命令的按键序列中的第一个或下一个非键盘事件。 更精确地说,‘e’ 获取列表形式的事件,因此你可以查看列表中的数据。 See 输入事件。无输入输出。
‘e’ 用于鼠标事件和特殊系统事件(see 其他系统事件)。 命令接收的事件列表取决于具体事件。 See 输入事件 在对应小节中描述了每种事件的列表形式。
你可以在单个命令的交互式声明中多次使用 ‘e’。 如果调用该命令的按键序列中有 n 个列表形式的事件, 则第 n 个 ‘e’ 提供第 n 个此类事件。 非列表形式的事件(如功能键和 ASCII 字符)不计入 ‘e’ 所关注的事件。
文件名。文件不必存在。补全、默认值、提示。
文件名。文件不必存在。如果用户只输入目录名,则返回值就是该目录名, 不会在目录后附加文件名。补全、默认值、提示。
无关参数。该代码总是提供 nil 作为参数值。无输入输出。
按键序列(see 按键序列)。 它会持续读取事件,直到在当前按键映射中找到一个命令(或未定义命令)。 按键序列参数以字符串或向量表示。光标不会移入回显区。提示。
如果 ‘k’ 读取的按键序列以按下事件结束, 它还会读取并丢弃随后的释放事件。 你可以使用 ‘U’ 代码字符获取该释放事件。
这类输入用于 describe-key 和 keymap-global-set 等命令。
可用于 keymap-set 等函数的按键序列形式。
工作方式与 ‘k’ 类似,区别在于它会对按键序列中的最后一个输入事件
禁止通常用于(必要时)将未定义按键转换为已定义按键的转换(see 读取按键序列)。
因此该形式通常用于提示输入要绑定到命令的新按键序列。
标记位置,以整数表示。无输入输出。
任意文本,在小缓冲中使用当前缓冲区的输入法读取,并以字符串返回(see Input Methods in The GNU Emacs Manual)。提示。
数字,在小缓冲中读取。如果输入不是数字,用户必须重新输入。 ‘n’ 从不使用前缀参数。提示。
数字前缀参数;但如果没有前缀参数,则像 n 一样读取数字。 值始终为数字。See 前缀命令参数。提示。
数字前缀参数。(注意此 ‘p’ 为小写。)无输入输出。
原始前缀参数。(注意此 ‘P’ 为大写。)无输入输出。
光标和标记,作为两个数值参数,较小者在前。
这是唯一指定连续两个参数而非一个参数的代码字母。
如果调用命令时当前缓冲区未设置标记,将会发出错误信号。
如果临时标记模式已开启(see The Mark) — 默认即为开启 —
且用户选项 mark-even-if-inactive 为 nil,
即使标记已设置但未激活,Emacs 也会发出错误信号。无输入输出。
任意文本,在小缓冲中读取并以字符串返回(see 使用迷你缓冲区读取文本字符串)。 使用 C-j 或 RET 结束输入。 (可使用 C-q 将这两个字符之一包含到输入中。)提示。
名称在小缓冲中读取的已 intern 符号。 使用 C-j 或 RET 结束输入。 其他通常用于结束符号的字符(如空白、圆括号和方括号)在此处不结束输入。提示。
按键序列或 nil。
可在 ‘k’ 或 ‘K’ 参数之后使用,
以获取 ‘k’ 或 ‘K’ 读取按下事件后被丢弃的释放事件(如果有)。
如果没有丢弃释放事件,‘U’ 提供 nil 作为参数。无输入输出。
声明为用户选项的变量(即满足谓词 custom-variable-p)。
通过 read-variable 读取该变量。See Definition of read-variable。
已存在、补全、提示。
Lisp 对象,以其读取语法指定,以 C-j 或 RET 结束。 该对象不会被求值。See 使用迷你缓冲读取 Lisp 对象。提示。
Lisp 形式的值。‘X’ 读取方式与 ‘x’ 相同, 然后对该形式求值,使其值成为命令的参数。提示。
编码系统名称(符号)。如果用户输入空内容,参数值为 nil。
See Coding Systems。补全、已存在、提示。
编码系统名称(符号)——但仅当该命令有前缀参数时有效。
如果没有前缀参数,‘Z’ 提供 nil 作为参数值。
补全、已存在、提示。