emacs - 将带有动态菜单的按钮添加到emacs的modeline吗?

标签 emacs elisp modeline

我正在为emacs设置自己的次要模式。现在,我想向modeline添加按钮。单击此按钮必须出现弹出菜单。该菜单的项目取决于用户的操作。我知道有一种方法可以用`minor-mode-alist'向modeline添加一个功能按钮,但是我不知道如何制作动态菜单。

最佳答案

好的。解决方案已建立。:)
首先:定义一些键盘映射:

(defconst my-mode-line-map
  (let ((map (make-sparse-keymap)))
    (define-key map [mode-line down-mouse-1]
      (make-sparse-keymap))
    map))

第二:将带有适当字符串的列表追加到modeline:
(setq global-mode-string 
  (append global-mode-string 
    (list
      (propertize string-name
        'local-map my-mode-line-map
        'mouse-face 'mode-line-highlight))))

第三:现在您可以使用添加项目
 (define-key my-mode-line-map 
   (vconcat [mode-line down-mouse-1]
     (list some_generated_id_for_future_use))
   (cons name function))

...然后用
 (define-key my-mode-line-map 
   (vconcat [mode-line down-mouse-1] 
     (list id_of_button_that_u_gave_when_add))
   nil)

关于emacs - 将带有动态菜单的按钮添加到emacs的modeline吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9019717/

相关文章:

emacs - 如何在 Emacs 的 lisp-mode 中高亮显示所有函数的名称?

macos - 我可以在 Mac 上为 Emacs 安装 WhizzyTeX(Mac OS X 是 unix 环境)吗?

emacs - Emacs如何选择在模式行中列出哪些次要模式?

emacs - 次要模式 模式行菜单

emacs - 将字体设置为部分模式行

firefox - 在不关注浏览器的情况下在 emacs 中运行 browse-url

emacs - 在Emacs组织模式下设置本地文件变量

emacs - 如何在 elisp 中覆盖/更改模式键绑定(bind)?

emacs - 如何确保 Emacs 中高亮关键字的正确优先级?

file - Emacs 口齿不清 : Concise way to get `directory-files` without "." and ".."?