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))))))