Emacs 简单的次要模式,以保持轻松菜单

Emacs 简单的次要模式,以保持轻松菜单,emacs,menu,mode,Emacs,Menu,Mode,我想要一份菜单,我需要的时候可以叫它。我认为小调模式是最好的选择。因此,我编写了一个次要模式,它只定义键映射和简易菜单: ;; keymap: (defvar bk-mdanalysis-mode-map (let ((map (make-sparse-keymap))) map) "Keymap for bk-mdanalysis minor mode") ;; menu: (easy-menu-define mda bk-mdanalysis-mode-map "bk-md

我想要一份菜单,我需要的时候可以叫它。我认为小调模式是最好的选择。因此,我编写了一个次要模式,它只定义键映射和简易菜单:

;; keymap:
(defvar bk-mdanalysis-mode-map
  (let ((map (make-sparse-keymap)))
    map)
  "Keymap for bk-mdanalysis minor mode")

;; menu:
(easy-menu-define mda bk-mdanalysis-mode-map "bk-mdanalysis-mode menu"
  '("BK-MDA"
    ["Test" (lambda () (interactive) (insert "test!")) t]
    ))

(define-minor-mode bk-mdanalysis-mode 
  nil nil nil 
  bk-mdanalysis-mode-map)

(provide 'bk-mdanalysis-mode)
由于某种原因,它不起作用。怎么了

编辑

等一下,它起作用了


我现在应该删除它吗?还是什么?

您将bk mdanalysis mode map作为第5个参数来定义次要模式,而它应该是第4个参数。幸运的是,define minor mode在默认情况下仍将使用它,因此它仍然有效,并且第5个参数将被忽略。

我一直觉得有点不对劲。等一下,它的doc说
(define minor mode mode doc&可选INIT-VALUE LIGHTER KEYMAP&rest BODY)
——所以它应该是第5个参数。Duh!你是对的,我计算不正确,并且由于缺少docstring而被抛弃:许多次要模式都有一个像你一样的“nil nil nil”,表示“init value lighter keymap”。