summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/easymenu.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1994-03-30 18:57:29 +0000
committerRichard M. Stallman <rms@gnu.org>1994-03-30 18:57:29 +0000
commit8df69fb0327149fd8ddd8920b3620aed948fa5a0 (patch)
tree04c02adaa40a32063c0dd4085f7e59f7d7152e9e /lisp/emacs-lisp/easymenu.el
parentb65e3dd79eb5066d653e999c350a879c7e19886f (diff)
downloademacs-8df69fb0327149fd8ddd8920b3620aed948fa5a0.tar.gz
*** empty log message ***
Diffstat (limited to 'lisp/emacs-lisp/easymenu.el')
-rw-r--r--lisp/emacs-lisp/easymenu.el44
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