定义菜单项更简单(也是最初)的方式,是将某种事件类型(具体事件类型无关紧要)绑定为如下形式:
(item-string . real-binding)
其中 CAR 部分 item-string 是在菜单中显示的字符串。 它应当简短—最好一到三个词,并描述其所对应命令的功能。 注意并非所有图形工具集都能在菜单中显示非ASCII文本(键盘菜单可以正常显示,GTK+ 工具集也基本支持)。
你也可以额外提供第二个字符串,称为帮助提示字符串,写法如下:
(item-string help . real-binding)
help 指定了当鼠标悬停在该项上时显示的帮助提示字符串,其显示方式与 help-echo 文本属性相同(see Help display)。
对 define-key 而言,item-string 和 help-string 属于事件绑定的一部分。
但 lookup-key 只返回 real-binding,且执行按键时也只使用 real-binding。
如果 real-binding 为 nil,则 item-string 会出现在菜单中,但无法被选中。
如果 real-binding 是一个符号,并且拥有非 nil 的 menu-enable 属性,
则该属性是一个表达式,用于控制菜单项是否可用。
每次使用该按键映射显示菜单时,Emacs 都会求值该表达式,仅当结果非 nil 时才启用该菜单项。
菜单项被禁用时会以模糊样式显示,且无法选中。
菜单栏并不会在每次查看菜单时重新计算哪些项可用。
这是因为 X 工具集需要预先获得完整的菜单树形结构。
若要强制刷新菜单栏的可用状态,可调用 force-mode-line-update(see 模式行格式)。