当你在已有菜单中插入新项时,通常希望将其放在现有菜单项中的特定位置。
如果使用 define-key 添加项,它默认会出现在菜单最前面。
若要放在其他位置,可使用 keymap-set-after:
在 map 中为 key 定义值为 binding 的绑定,
用法与 keymap-set 类似(see 修改按键绑定),
但会将该绑定放置在事件 after 对应绑定的后面。
参数 key 应表示单个菜单项或按键,且满足 key-valid-p(see 按键序列)。
after 应为单个事件类型—符号或字符,而非序列。
新绑定会放在 after 绑定之后。
若 after 为 t 或被省略,则新绑定放在按键映射的最后面。
不过,新绑定会添加在任何继承映射之前。
示例如下:
(keymap-set-after my-menu "<drink>"
'("Drink" . drink-command) 'eat)
为虚拟功能键 DRINK 创建绑定,并将其放在 EAT 绑定的紧后方。
下面代码演示如何在 Shell 模式的 ‘Signals’ 菜单中,
在 break 项之后插入名为 ‘Work’ 的项:
(keymap-set-after shell-mode-map "<menu-bar> <signals> <work>"
'("Work" . work-command) 'break)