23.18.2 菜单与鼠标

让菜单映射生成菜单的常规方式,是将其设为某个前缀键的定义。 (Lisp 程序可以显式弹出菜单并接收用户的选择—参见 Pop-Up Menus。)

若前缀键以鼠标事件结尾,Emacs 会通过弹出一个可见菜单来处理该菜单映射, 用户即可使用鼠标选择菜单项。当用户点击某个菜单项时, 所生成的事件即为绑定到该菜单项的字符或符号。 (若菜单包含多级结构或来自菜单栏,一个菜单项可能会生成一系列事件。)

通常推荐使用按键按下事件来触发菜单。 用户随后可通过释放按键来选定菜单项。

若菜单映射中包含对嵌套映射的绑定,则该嵌套映射对应一个 submenu(子菜单)。 此时会出现一个以嵌套映射的项字符串为标签的菜单项, 点击该项会自动弹出指定的子菜单。作为特例, 如果菜单映射中仅包含一个嵌套映射而无其他菜单项, 菜单会直接显示嵌套映射的内容,而非以子菜单形式呈现。

但是,若 Emacs 编译时未启用 X 工具集支持,或是在文本终端环境下, 子菜单将不受支持。每个嵌套映射都会显示为一个菜单项, 但点击后不会自动弹出子菜单。若希望模拟子菜单效果, 可在嵌套映射的项字符串开头添加 ‘@’。 这会使 Emacs 使用独立的 menu pane(菜单面板)显示该嵌套映射; 项字符串中 ‘@’ 之后的部分即为面板标签。 若 Emacs 未启用 X 工具集支持,或菜单在文本终端中显示, 则不会使用菜单面板;此时项字符串开头的 ‘@’ 在显示菜单标签时会被忽略,且不产生其他效果。

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike