[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el |
Date: |
Sat, 06 Nov 2004 05:07:48 -0500 |
Index: emacs/lisp/emacs-lisp/easymenu.el
diff -c emacs/lisp/emacs-lisp/easymenu.el:1.66
emacs/lisp/emacs-lisp/easymenu.el:1.67
*** emacs/lisp/emacs-lisp/easymenu.el:1.66 Tue Nov 2 09:26:28 2004
--- emacs/lisp/emacs-lisp/easymenu.el Sat Nov 6 10:01:56 2004
***************
*** 242,250 ****
(setq visible (or arg ''nil)))))
(if (equal visible ''nil)
nil ; Invisible menu entry, return nil.
! (if (and visible (not (easy-menu-always-true visible)))
(setq prop (cons :visible (cons visible prop))))
! (if (and enable (not (easy-menu-always-true enable)))
(setq prop (cons :enable (cons enable prop))))
(if filter (setq prop (cons :filter (cons filter prop))))
(if help (setq prop (cons :help (cons help prop))))
--- 242,250 ----
(setq visible (or arg ''nil)))))
(if (equal visible ''nil)
nil ; Invisible menu entry, return nil.
! (if (and visible (not (easy-menu-always-true-p visible)))
(setq prop (cons :visible (cons visible prop))))
! (if (and enable (not (easy-menu-always-true-p enable)))
(setq prop (cons :enable (cons enable prop))))
(if filter (setq prop (cons :filter (cons filter prop))))
(if help (setq prop (cons :help (cons help prop))))
***************
*** 363,374 ****
(cons cmd keys))))
(setq cache-specified nil))
(if keys (setq prop (cons :keys (cons keys prop)))))
! (if (and visible (not (easy-menu-always-true visible)))
(if (equal visible ''nil)
;; Invisible menu item. Don't insert into keymap.
(setq remove t)
(setq prop (cons :visible (cons visible prop)))))))
! (if (and active (not (easy-menu-always-true active)))
(setq prop (cons :enable (cons active prop))))
(if (and (or no-name cache-specified)
(or (null cache) (stringp cache) (vectorp cache)))
--- 363,374 ----
(cons cmd keys))))
(setq cache-specified nil))
(if keys (setq prop (cons :keys (cons keys prop)))))
! (if (and visible (not (easy-menu-always-true-p visible)))
(if (equal visible ''nil)
;; Invisible menu item. Don't insert into keymap.
(setq remove t)
(setq prop (cons :visible (cons visible prop)))))))
! (if (and active (not (easy-menu-always-true-p active)))
(setq prop (cons :enable (cons active prop))))
(if (and (or no-name cache-specified)
(or (null cache) (stringp cache) (vectorp cache)))
***************
*** 426,432 ****
(defun easy-menu-name-match (name item)
"Return t if NAME is the name of menu item ITEM.
! NAME can be either a string, or a symbol."
(if (consp item)
(if (symbolp name)
(eq (car-safe item) name)
--- 426,433 ----
(defun easy-menu-name-match (name item)
"Return t if NAME is the name of menu item ITEM.
! NAME can be either a string, or a symbol.
! ITEM should be a keymap binding of the form (KEY . MENU-ITEM)."
(if (consp item)
(if (symbolp name)
(eq (car-safe item) name)
***************
*** 439,445 ****
(eq (car-safe item) (intern name))
(eq (car-safe item) (easy-menu-intern name)))))))
! (defun easy-menu-always-true (x)
"Return true if form X never evaluates to nil."
(if (consp x) (and (eq (car x) 'quote) (cadr x))
(or (eq x t) (not (symbolp x)))))
--- 440,446 ----
(eq (car-safe item) (intern name))
(eq (car-safe item) (easy-menu-intern name)))))))
! (defun easy-menu-always-true-p (x)
"Return true if form X never evaluates to nil."
(if (consp x) (and (eq (car x) 'quote) (cadr x))
(or (eq x t) (not (symbolp x)))))
***************
*** 591,600 ****
(cons name item)) ; Keymap or new menu format
)))
! (defun easy-menu-get-map-look-for-name (name submap)
! (while (and submap (not (easy-menu-name-match name (car submap))))
! (setq submap (cdr submap)))
! submap)
(defun easy-menu-get-map (map path &optional to-modify)
"Return a sparse keymap in which to add or remove an item.
--- 592,615 ----
(cons name item)) ; Keymap or new menu format
)))
! (defun easy-menu-lookup-name (map name)
! "Lookup menu item NAME in keymap MAP.
! Like `lookup-key' except that NAME is not an array but just a single key
! and that NAME can be a string representing the menu item's name."
! (or (lookup-key map (vector (easy-menu-intern name)))
! (when (stringp name)
! ;; `lookup-key' failed and we have a menu item name: look at the
! ;; actual menu entries's names.
! (catch 'found
! (map-keymap (lambda (key item)
! (if (condition-case nil (member name item)
! (error nil))
! ;; Found it!! Look for it again with
! ;; `lookup-key' so as to handle inheritance and
! ;; to extract the actual command/keymap bound to
! ;; `name' from the item (via get_keyelt).
! (throw 'found (lookup-key map (vector key)))))
! map)))))
(defun easy-menu-get-map (map path &optional to-modify)
"Return a sparse keymap in which to add or remove an item.
***************
*** 605,638 ****
In some cases we use that to select between the local and global maps."
(setq map
(catch 'found
! (let* ((key (vconcat (unless map '(menu-bar))
! (mapcar 'easy-menu-intern path)))
! (maps (mapcar (lambda (map)
! (setq map (lookup-key map key))
! (while (and (symbolp map) (keymapp map))
! (setq map (symbol-function map)))
! map)
! (if map
! (list (if (and (symbolp map)
! (not (keymapp map)))
! (symbol-value map) map))
! (current-active-maps)))))
;; Prefer a map that already contains the to-be-modified entry.
(when to-modify
(dolist (map maps)
! (when (and (keymapp map)
! (easy-menu-get-map-look-for-name to-modify map))
(throw 'found map))))
;; Use the first valid map.
! (dolist (map maps)
! (when (keymapp map)
! (throw 'found map)))
;; Otherwise, make one up.
;; Hardcoding current-local-map is lame, but it's difficult
;; to know what the caller intended for us to do ;-(
(let* ((name (if path (format "%s" (car (reverse path)))))
(newmap (make-sparse-keymap name)))
! (define-key (or map (current-local-map)) key
(if name (cons name newmap) newmap))
newmap))))
(or (keymapp map) (error "Malformed menu in easy-menu: (%s)" map))
--- 620,653 ----
In some cases we use that to select between the local and global maps."
(setq map
(catch 'found
! (if (and map (symbolp map) (not (keymapp map)))
! (setq map (symbol-value map)))
! (let ((maps (or map (current-active-maps))))
! ;; Look for PATH in each map.
! (unless map (push 'menu-bar path))
! (dolist (name path)
! (setq maps
! (delq nil (mapcar (lambda (map)
! (setq map (easy-menu-lookup-name
! map name))
! (and (keymapp map) map))
! maps))))
!
;; Prefer a map that already contains the to-be-modified entry.
(when to-modify
(dolist (map maps)
! (when (easy-menu-lookup-name map to-modify)
(throw 'found map))))
;; Use the first valid map.
! (when maps (throw 'found (car maps)))
!
;; Otherwise, make one up.
;; Hardcoding current-local-map is lame, but it's difficult
;; to know what the caller intended for us to do ;-(
(let* ((name (if path (format "%s" (car (reverse path)))))
(newmap (make-sparse-keymap name)))
! (define-key (or map (current-local-map))
! (apply 'vector (mapcar 'easy-menu-intern path))
(if name (cons name newmap) newmap))
newmap))))
(or (keymapp map) (error "Malformed menu in easy-menu: (%s)" map))
***************
*** 640,644 ****
(provide 'easymenu)
! ;;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a
;;; easymenu.el ends here
--- 655,659 ----
(provide 'easymenu)
! ;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a
;;; easymenu.el ends here
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el, Richard M . Stallman, 2004/11/02
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el,
Stefan Monnier <=
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el, Andreas Schwab, 2004/11/06
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el, Kai Großjohann, 2004/11/06
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el, Stefan Monnier, 2004/11/09
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el, Stefan Monnier, 2004/11/10
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/easymenu.el, Stefan Monnier, 2004/11/10