23.18.7 修改菜单

当你在已有菜单中插入新项时,通常希望将其放在现有菜单项中的特定位置。 如果使用 define-key 添加项,它默认会出现在菜单最前面。 若要放在其他位置,可使用 keymap-set-after

Function: keymap-set-after map key binding &optional after

map 中为 key 定义值为 binding 的绑定, 用法与 keymap-set 类似(see 修改按键绑定), 但会将该绑定放置在事件 after 对应绑定的后面。 参数 key 应表示单个菜单项或按键,且满足 key-valid-p(see 按键序列)。 after 应为单个事件类型—符号或字符,而非序列。 新绑定会放在 after 绑定之后。 若 aftert 或被省略,则新绑定放在按键映射的最后面。 不过,新绑定会添加在任何继承映射之前。

示例如下:

(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)
emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike