15.4.4 类型关键字

你可以在自定义类型的类型名符号之后,指定关键字—参数对。 下面是可用的关键字及其含义:

:value default

提供默认值。

如果某个备选项中 nil 不是有效值, 那么必须使用 :value 指定一个合法的默认值。

如果你将它用于出现在 choice 内部的备选项类型, 它会指定:当用户在自定义缓冲区的菜单中选中该备选项时, 最初使用的默认值。

当然,如果选项的实际值匹配该备选项, 则会显示实际值,而非 default

:format format-string

该字符串会被插入到缓冲区中,用来表示对应类型的值。 在 format-string 中可以使用以下 ‘%’ 转义符:

%[button%]

显示标记为按钮的文本 button:action 属性指定用户点击该按钮时执行的操作; 其值是一个接受两个参数的函数——按钮所在的界面组件,以及事件。

无法指定两个拥有不同操作的独立按钮。

%{sample%}

使用 :sample-face 指定的特殊 face 显示 sample

%v

替换为该项的值。值的显示方式取决于项的类型, (对于变量而言)还取决于其自定义类型。

%d

替换为该项的文档字符串。

%h

与 ‘%d’ 类似,但如果文档字符串超过一行, 会添加一个按钮,用于控制显示全部内容还是只显示第一行。

%t

在此处替换为标签。标签通过 :tag 关键字指定。

%%

显示一个字面量 ‘%’。

:action action

用户点击按钮时执行 action

:button-face face

face(一个 face 名或 face 名列表) 用于 ‘%[…%]’ 显示的按钮文本。

:button-prefix prefix
:button-suffix suffix

用于指定按钮之前和之后显示的文本。 每一项可以是:

nil

不插入任何文本。

a string

直接插入该字符串。

a symbol

使用该符号的值。

:tag tag

使用字符串 tag 作为对应类型的值(或值的一部分)的标签。 为自定义界面提供清晰易懂的标签非常重要, 尤其是在使用 restricted-sexp 类型或定义新类型时。 See 定义新类型

:doc doc

使用 doc 作为该类型对应值(或值的一部分)的文档字符串。 要使其生效,必须为 :format 指定值, 并在其中使用 ‘%d’ 或 ‘%h’。

通常为某个类型指定文档字符串, 是为了提供更多关于 choice 类型内部备选项 或其他复合类型各部分含义的信息。

:help-echo motion-doc

当你通过 widget-forwardwidget-backward 移动到该项时,会在回显区显示字符串 motion-doc。 此外,motion-doc 还会用作鼠标的 help-echo 字符串, 它实际上可以是一个函数或表达式,求值后得到帮助字符串。 如果是函数,会以该界面组件为唯一参数调用它。

:match function

指定如何判断一个值是否匹配该类型。 对应的值 function 应该是一个接受两个参数的函数: 一个组件和一个值;如果值合法则返回非 nil

:match-inline function

指定如何判断一个内联值是否匹配该类型。 对应的值 function 应该是一个接受两个参数的函数: 一个组件和一个内联值;如果值合法则返回非 nil。 关于内联值的更多信息,参见 列表内拼接

:validate function

为输入指定校验函数。function 接受一个组件作为参数, 如果组件当前值合法则返回 nil。 否则返回包含非法数据的组件, 并将该组件的 :error 属性设为描述错误的字符串。

:type-error string

string 用于描述一个值为何不匹配该类型, 由 :match 函数判断。 当 :match 函数返回 nil 时, 组件的 :error 属性会被设为 string


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike