diff options
author | Richard M. Stallman <rms@gnu.org> | 1994-03-30 18:57:29 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1994-03-30 18:57:29 +0000 |
commit | 8df69fb0327149fd8ddd8920b3620aed948fa5a0 (patch) | |
tree | 04c02adaa40a32063c0dd4085f7e59f7d7152e9e /lisp/emacs-lisp/easymenu.el | |
parent | b65e3dd79eb5066d653e999c350a879c7e19886f (diff) | |
download | emacs-8df69fb0327149fd8ddd8920b3620aed948fa5a0.tar.gz |
*** empty log message ***
Diffstat (limited to 'lisp/emacs-lisp/easymenu.el')
-rw-r--r-- | lisp/emacs-lisp/easymenu.el | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/lisp/emacs-lisp/easymenu.el b/lisp/emacs-lisp/easymenu.el index 0a489840133..90b4f55fe09 100644 --- a/lisp/emacs-lisp/easymenu.el +++ b/lisp/emacs-lisp/easymenu.el @@ -1,9 +1,10 @@ ;;; easymenu.el --- support the easymenu interface for defining a menu. -;; Keywords: emulations - ;; Copyright (C) 1994 Free Software Foundation, Inc. +;; Keywords: emulations +;; Author: rms + ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify @@ -27,22 +28,26 @@ ;;; Code: ;;;###autoload -(defun easy-menu-define (symbol maps doc menu) +(defmacro easy-menu-define (symbol maps doc menu) "Define a menu bar submenu in maps MAPS, according to MENU. The arguments SYMBOL and DOC are ignored; they are present for -compatibility only. In other Emacs versions they may be used -as a variable to hold the menu data, and a doc string for that variable. +compatibility only. SYMBOL is not evaluated. In other Emacs versions +these arguments may be used as a variable to hold the menu data, and a +doc string for that variable. The first element of MENU must be a string. It is the menu bar item name. The rest of the elements are menu items. -A menu item is usually a vector of three elements: [NAME CALLBACK t] +A menu item is usually a vector of three elements: [NAME CALLBACK ENABLE] NAME is a string--the menu item name. CALLBACK is a command to run when the item is chosen, or a list to evaluate when the item is chosen. +ENABLE is a symbol; if its value is non-nil, the item is enabled +for selection. + A menu item can be a string. Then that string appears in the menu as unselectable text. A string consisting solely of hyphens is displayed as a solid horizontal line. @@ -51,12 +56,14 @@ A menu item can be a list. It is treated as a submenu. The first element should be the submenu name. That's used as the menu item in the top-level menu. The cdr of the submenu list is a list of menu items, as above." - (or (keymapp maps) (setq maps (list maps))) - (let ((keymap (easy-menu-keymap (car menu) (cdr menu)))) - (while maps - (define-key (car maps) (vector 'menu-bar (intern (car menu))) - (cons (car menu) keymap)) - (setq maps (cdr maps))))) + (` (let* ((maps (, maps)) + (menu (, menu)) + (keymap (easy-menu-keymap (car menu) (cdr menu)))) + (and (keymapp maps) (setq maps (list maps))) + (while maps + (define-key (car maps) (vector 'menu-bar (intern (car menu))) + (cons (car menu) keymap)) + (setq maps (cdr maps)))))) (defvar easy-menu-item-count 0) @@ -76,16 +83,15 @@ is a list of menu items, as above." (setq name (if (string-match "^-+$" item) "" item))) ((consp item) (setq command (easy-menu-keymap (car item) (cdr item))) - (setq name (car item))) + (setq name (concat (car item) "..."))) ((vectorp item) (setq command (make-symbol (format "menu-function-%d" easy-menu-item-count))) - (setq enabler (make-symbol (format "menu-function-%d-enabler" - easy-menu-item-count))) (setq easy-menu-item-count (1+ easy-menu-item-count)) - (put command 'menu-enable enabler) - (set enabler (aref item 2)) + (put command 'menu-enable (aref item 2)) (setq name (aref item 0)) + (if (keymapp callback) + (setq name (concat name " ..."))) (if (symbolp callback) (fset command callback) (fset command (list 'lambda () '(interactive) callback))))) @@ -98,6 +104,10 @@ is a list of menu items, as above." (setq menu-items (cdr menu-items))) menu)) +(defmacro easy-menu-remove (menu)) + +(defmacro easy-menu-add (menu &optional map)) + (provide 'easymenu) ;;; easymenu.el ends here |