summaryrefslogtreecommitdiff
path: root/lisp/tool-bar.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2010-04-23 12:26:11 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2010-04-23 12:26:11 -0400
commit9ae0c31028f246f77a16f4989d5c63bfbbee4832 (patch)
tree4eec67ea6b8cbfb6c3a9f7eef29239608b09404c /lisp/tool-bar.el
parentbd486b039f9478afaff25e358b9e2c615e39f5c6 (diff)
downloademacs-9ae0c31028f246f77a16f4989d5c63bfbbee4832.tar.gz
Provide byte-compiler warnings when set-default a read-only var.
* emacs-lisp/bytecomp.el (byte-compile-set-default): New function. (byte-compile-setq-default): Optimize for the single-var case and don't call byte-compile-form in this case to avoid inf-loop with byte-compile-set-default.
Diffstat (limited to 'lisp/tool-bar.el')
-rw-r--r--lisp/tool-bar.el31
1 files changed, 16 insertions, 15 deletions
diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el
index 18a75437f97..c1fcd530d60 100644
--- a/lisp/tool-bar.el
+++ b/lisp/tool-bar.el
@@ -232,6 +232,7 @@ holds a keymap."
submap key)
;; We'll pick up the last valid entry in the list of keys if
;; there's more than one.
+ ;; FIXME: Aren't they *all* "valid"?? --Stef
(dolist (k keys)
;; We're looking for a binding of the command in a submap of
;; the menu bar map, so the key sequence must be two or more
@@ -242,24 +243,24 @@ holds a keymap."
;; Last element in the bound key sequence:
(kk (aref k (1- (length k)))))
(if (and (keymapp m)
- (symbolp kk))
+ (symbolp kk)) ;FIXME: Why? --Stef
(setq submap m
key kk)))))
- (when (and (symbolp submap) (boundp submap))
- (setq submap (eval submap)))
- (let ((defn (assq key (cdr submap))))
- (if (eq (cadr defn) 'menu-item)
- (define-key-after in-map (vector key)
- (append (cdr defn) (list :image image-exp) props))
- (setq defn (cdr defn))
+ (when submap
+ (let ((defn nil))
+ ;; Here, we're essentially doing a "lookup-key without get_keyelt".
+ (map-keymap (lambda (k b) (if (eq k key) (setq defn b)))
+ submap)
(define-key-after in-map (vector key)
- (let ((rest (cdr defn)))
- ;; If the rest of the definition starts
- ;; with a list of menu cache info, get rid of that.
- (if (and (consp rest) (consp (car rest)))
- (setq rest (cdr rest)))
- (append `(menu-item ,(car defn) ,rest)
- (list :image image-exp) props)))))))
+ (if (eq (car defn) 'menu-item)
+ (append (cdr defn) (list :image image-exp) props)
+ (let ((rest (cdr defn)))
+ ;; If the rest of the definition starts
+ ;; with a list of menu cache info, get rid of that.
+ (if (and (consp rest) (consp (car rest)))
+ (setq rest (cdr rest)))
+ (append `(menu-item ,(car defn) ,rest)
+ (list :image image-exp) props))))))))
;;; Set up some global items. Additions/deletions up for grabs.