单击时如何使模式行弹出菜单中的条目成为次要模式菜单?
有关参考,请参阅此讨论https://github.com/flycheck/flycheck/issues/365#issuecomment-38386558
单击时如何使模式行弹出菜单中的条目成为次要模式菜单?
有关参考,请参阅此讨论https://github.com/flycheck/flycheck/issues/365#issuecomment-38386558
似乎在单击mode-line
模式条目时显示的菜单与单击菜单栏中的模式条目时显示的菜单相同,前提是该模式定义了顶级菜单条目。最简单的方法是定义一个像这样的顶级菜单
(easy-menu-define flycheck-menu flycheck-mode-map "Flycheck menu"
'("Flycheck"
["Check current buffer" flycheck-buffer t]
["Clear errors in buffer" flycheck-clear t]
["Compile current buffer" flycheck-compile t]
"---"
["Go to next error" flycheck-next-error t]
["Go to previous error" flycheck-previous-error t]
["Show all errors" flycheck-list-errors t]
["Google messages at point" flycheck-google-messages t]
"---"
["Select syntax checker" flycheck-select-checker t]
"---"
["Describe syntax checker" flycheck-describe-checker t]
["Read the Flycheck manual" flycheck-info t]))
如果您不想引入另一个菜单栏项,这可能不是解决方案。查看其中的功能minor-mode-menu-from-indicator
似乎mouse.el
它会查找从[menu-bar]
获取模式行菜单开始的键绑定,这对您来说可能也很有趣。
请注意,您可以提供任何有效的模式行构造作为给定模式in的STRING
/lighter 值。VARIABLE
minor-mode-alist
因此,虽然这个值通常只是模式的名称(或一些适当的缩写),但您可以做更复杂的事情,例如包括设置文本属性——它可以包括一个local-map
属性来指定鼠标单击的键映射(请参阅 参考资料C-hig (elisp) Properties in Mode
RET)。
您可能会看M-x find-variable
RET mode-line-modes
RET一个示例(nb IIRC,此变量仅在 Emacs 24 中,其中mode-line-format
变量的复杂性被分解为独立的子变量,以使整体结构更易于理解/修改)。
请参阅C-hig (elisp) Mode Line Format
RET完整文档。