42.20.1 按钮属性

每个按钮都有一组关联属性,用于定义其外观与行为, 同时也可以使用其他任意属性来实现应用专用的功能。 以下属性对按钮库具有特殊含义:

action

用户触发按钮时调用的函数,该函数接收唯一参数 button。 默认值为 ignore,即不执行任何操作。

mouse-action

action 类似,如果存在该属性, 则在鼠标点击触发按钮时(而非用户按下 RET) 会使用它代替 action。 如果不存在,则鼠标点击仍使用 action

face

Emacs 的文本视觉样式,用于控制此类按钮的显示效果; 默认为 button 文本视觉样式。

mouse-face

额外的文本视觉样式,用于控制鼠标悬停时的外观 (与按钮默认的文本视觉样式叠加); 默认为 Emacs 标准的 highlight 文本视觉样式。

keymap

按钮的键盘映射,定义在按钮区域内生效的按键绑定。 默认使用标准按钮区域键盘映射,存储在变量 button-map 中, 该映射将 RETmouse-2 绑定为触发按钮。

type

按钮类型。See 按钮类型

help-echo

Emacs 提示帮助系统显示的字符串;默认值为 "mouse-2, RET: Push this button"。 它也可以是一个返回字符串的函数, 或一个求值后得到字符串或 nil 的表达式。 详细说明见 Text help-echo

该函数接收三个参数:windowobjectpos。 第二个参数 object, 对于覆盖层按钮是携带该属性的覆盖层, 对于文本属性按钮则是包含按钮的缓冲区。 其余参数的含义与特殊文本属性 help-echo 一致。

follow-link

follow-link 属性,用于定义 mouse-1 点击该按钮时的行为,See 定义可点击文本

button

所有按钮都具有非 nilbutton 属性, 这在查找构成按钮的文本区域时非常有用 (标准按钮函数正是这样实现的)。

按钮所在的文本区域还定义了其他属性, 但在一般使用场景下通常无需关心。