Function: easy-menu-do-define
easy-menu-do-define is a byte-compiled function defined in
easymenu.el.gz.
Signature
(easy-menu-do-define SYMBOL MAPS DOC MENU)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/easymenu.el.gz
(defun easy-menu-do-define (symbol maps doc menu)
;; We can't do anything that might differ between Emacs dialects in
;; `easy-menu-define' in order to make byte compiled files
;; compatible. Therefore everything interesting is done in this
;; function.
(let ((keymap (easy-menu-create-menu (car menu) (cdr menu))))
(when symbol
(set symbol keymap)
(defalias symbol
(lambda (event) (:documentation doc) (interactive "@e")
(x-popup-menu event
(or (and (symbolp keymap)
(funcall
(or (plist-get (get keymap 'menu-prop)
:filter)
#'identity)
(symbol-function keymap)))
keymap))))
;; These symbols are commands, but not interesting for users
;; to `M-x TAB'.
(function-put symbol 'completion-predicate #'ignore))
(dolist (map (if (keymapp maps) (list maps) maps))
(define-key map
(vector 'menu-bar (if (symbolp (car menu))
(car menu)
;; If a string, then use the downcased
;; version for greater backwards compatibility.
(intern (downcase (car menu)))))
(easy-menu-binding keymap (car menu))))))