这将在菜单栏中的某个位置定位emacs用户定义的菜单。 我使用的是我使用的不同选项。无最佳
[从第一原理]
;; Define a top level Menue item "Openflow" and position it after "Tools"
(define-key-after global-map [menu-bar openflow]
(cons "Openflow" (make-sparse-keymap "Openflow")) 'Tools)
;; CAUTION: Menus are defined in reverse order. END comes first!!
(define-key global-map [menu-bar openflow openflow-download-mp]
'("download openflow mp image to target" . openflow-download-mp-image-to-target))
(define-key global-map [menu-bar openflow telnet-to-target]
'("Telnet to target" . (lambda () (interactive) (telnet target))))
(define-key global-map [menu-bar openflow separator4] '("---"))
;; Reading Upwards: All debugging etc starts here
;; But here we need to add the new subheading first
(define-key global-map [menu-bar openflow cleanups] (cons "Cleanups" (make-sparse-keymap "Cleanups")))
(define-key global-map [menu-bar openflow cleanups lp-emake-clean]
'("LP emake_wrapper clean" . (lambda () (interactive)
(openflow-emake-wrapper my-openflow-lp-build-path "clean"))))
;; etc etc etc...
[弱点]
非常凌乱..非常混乱。反向顺序 +子菜单为正常顺序:-)
easy模式太自动了
如果我在轻松模式下做同样的事情。(easy-menu-define openflow2 global-map "Openflow2"
'("Openflow2"
["download openflow mp image to target" openflow-download-mp-image-to-target t]
["Telnet to target" (telnet target)]
"-----"
("Cleanups"
["LP emake_wrapper clean" (openflow-emake-wrapper my-openflow-lp-build-path "clean")] )))
,但是,它在“文件”之前添加了第一个位置 - 看起来很糟糕。没有办法“定义键”
[混合模型]
“混合模型”(定义键 - 稀疏 - keymap和Easy-menu-add-item)很复杂,但凌乱
(define-key-after global-map [menu-bar openflow3]
(cons "Openflow3" (make-sparse-keymap "Openflow3")) 'Tools)
(easy-menu-add-item nil '("Openflow3")
["download openflow mp image to target" openflow-download-mp-image-to-target])
(easy-menu-add-item nil '("Openflow3")
["Telnet to target" (telnet target)])
(easy-menu-add-item nil '("Openflow3")
"-----")
(define-key-after global-map [menu-bar openflow3 cleanups3]
(cons "Cleanups3" (make-sparse-keymap "Cleanups3")) '("-----"))
(easy-menu-add-item nil '("Cleanups3")
["LP emake_wrapper clean" (openflow-emake-wrapper my-openflow-lp-build-path "clean")])
请告诉新手我在做什么错?
我正在使用类似的东西:
(easy-menu-define openflow2 nil "Openflow2"
'("Openflow2"
["download openflow mp image to target" openflow-download-mp-image-to-target t]
["Telnet to target" (telnet target)]
"-----"
("Cleanups"
["LP emake_wrapper clean" (openflow-emake-wrapper my-openflow-lp-build-path "clean")]
(define-key-after (lookup-key global-map [menu-bar])
[openflow]
(cons "Openflow" openflow2) 'tools)
定义一个带有易于menu-define的菜单,但将其放在菜单栏中的正确位置。
您的意思是“嵌套菜单”?如果您的意思是submenu
,那么答案是要为顶级菜单做同样的事情:使用cars的
car的car
是
car是菜单keymap. 这里是
dired+.el
的一个例子。它定义了Dired Menu-Bar菜单的子菜单,该子菜单上的菜单上是可变的。
子的菜单keymap是变量的值Mark
diredp-menu-bar-mark-menu
consult of ELISP手册,节点,以获取更多信息。如果您真的想使用Easy-Menu来定义您的子菜单(如您在下面的评论中所说的那样),请查看库
diredp-menu-bar-mark-menu
。这样做(对于弹出菜单,而不是菜单键菜单,但这个想法是相同的)。
例如:
;; Menu-bar `Mark' Menu.
(defvar diredp-menu-bar-mark-menu (make-sparse-keymap "Mark"))
(define-key dired-mode-map [menu-bar mark] (cons "Mark" diredp-menu-bar-mark-menu))
;; `Mark' > `Tagged' submenu.
(defvar diredp-mark-tags-menu (make-sparse-keymap "Tagged")
"`Tags' submenu for Dired menu-bar `Mark' menu.")
(define-key diredp-menu-bar-mark-menu [mark-tags] (cons "Tagged" diredp-mark-tags-menu))
(define-key diredp-mark-tags-menu [diredp-unmark-files-tagged-none]
'(menu-item "Unmark Not Tagged with Any..." diredp-unmark-files-tagged-none
:help "Unmark files that are not tagged with *any* of the tags you enter"))
为在现有菜单中的子菜单相对定位,使用
Defining Menus
(照常)。
可以做一些用简单的菜单来定义键,但以前。我将其添加到我的.emacs.el:
facemenu+.el
最后一行将新的(easy-menu-add-item
facemenu-menu
() (easy-menu-create-menu ; (menu-name menu-items)
"Syntax Highlighting (Font Lock)"
'(["In All Buffers" global-font-lock-mode
:style toggle :selected global-font-lock-mode
:active t]
["In Current Buffer" font-lock-mode
:style toggle :selected font-lock-mode :active t]
"--"
["More In Current Buffer" font-lock-fontify-more
(nth 2 (if (boundp 'flm-font-lock-fontify-level)
flm-font-lock-fontify-level
font-lock-fontify-level))]
["Less In Current Buffer" font-lock-fontify-less
(nth 1 (if (boundp 'flm-font-lock-fontify-level)
flm-font-lock-fontify-level
font-lock-fontify-level))]
"--"
["Cycle Keywords (Icicles)"
icicle-next-font-lock-keywords-repeat
:active
(and (boundp 'icicle-mode) icicle-mode
(fboundp 'icicle-next-font-lock-keywords-repeat))]
["+ Choose Keywords (Icicles)" icicle-font-lock-keyword
:active (and (boundp 'icicle-mode) icicle-mode
(fboundp 'icicle-font-lock-keyword))]))
"Syntax Highlighting (Font Lock)")
菜单项目之前的
;***
;*** Edit Menu additions
(easy-menu-define edit-occur-menu nil "Edit Occur menu"
'("Occur"
["Occur..." occur]
["Flush Matching Lines..." flush-lines]
["Keep Matching Lines..." keep-lines]
"---"
["How Many..." how-many]
))
(easy-menu-add-item nil '("Edit") edit-occur-menu "Go To")
菜单中的全局菜单栏。
我只想添加菜单栏中的顶级项目:
edit-occur-menu
将在帮助之前添加菜单。