[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r107604: * lisp/imenu.el: Fix multipl
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r107604: * lisp/imenu.el: Fix multiple inheritance breakage. |
Date: |
Wed, 14 Mar 2012 21:38:40 -0400 |
User-agent: |
Bazaar (2.3.1) |
------------------------------------------------------------
revno: 107604
fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9199
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2012-03-14 21:38:40 -0400
message:
* lisp/imenu.el: Fix multiple inheritance breakage.
(imenu-add-to-menubar): Don't add a redundant index.
(imenu-update-menubar): Handle a dynamically composed keymap.
modified:
lisp/ChangeLog
lisp/imenu.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2012-03-13 23:27:56 +0000
+++ b/lisp/ChangeLog 2012-03-15 01:38:40 +0000
@@ -1,3 +1,9 @@
+2012-03-15 Stefan Monnier <address@hidden>
+
+ * imenu.el: Fix multiple inheritance breakage (bug#9199).
+ (imenu-add-to-menubar): Don't add a redundant index.
+ (imenu-update-menubar): Handle a dynamically composed keymap.
+
2012-03-13 Katsumi Yamaoka <address@hidden>
* mail/sendmail.el (mail-encode-header):
=== modified file 'lisp/imenu.el'
--- a/lisp/imenu.el 2012-01-19 07:21:25 +0000
+++ b/lisp/imenu.el 2012-03-15 01:38:40 +0000
@@ -963,13 +963,14 @@
imenu-generic-expression
(not (eq imenu-create-index-function
'imenu-default-create-index-function)))
- (let ((newmap (make-sparse-keymap)))
- (set-keymap-parent newmap (current-local-map))
- (setq imenu--last-menubar-index-alist nil)
- (define-key newmap [menu-bar index]
- `(menu-item ,name ,(make-sparse-keymap "Imenu")))
- (use-local-map newmap)
- (add-hook 'menu-bar-update-hook 'imenu-update-menubar))
+ (unless (keymapp (lookup-key (current-local-map) [menu-bar index]))
+ (let ((newmap (make-sparse-keymap)))
+ (set-keymap-parent newmap (current-local-map))
+ (setq imenu--last-menubar-index-alist nil)
+ (define-key newmap [menu-bar index]
+ `(menu-item ,name ,(make-sparse-keymap "Imenu")))
+ (use-local-map newmap)
+ (add-hook 'menu-bar-update-hook 'imenu-update-menubar)))
(error "The mode `%s' does not support Imenu"
(format-mode-line mode-name))))
@@ -1008,6 +1009,9 @@
(car (cdr menu))))
'imenu--menubar-select))
(setq old (lookup-key (current-local-map) [menu-bar index]))
+ ;; This should never happen, but in some odd cases, potentially,
+ ;; lookup-key may return a dynamically composed keymap.
+ (if (keymapp (cadr old)) (setq old (cadr old)))
(setcdr old (cdr menu1)))))))
(defun imenu--menubar-select (item)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r107604: * lisp/imenu.el: Fix multiple inheritance breakage.,
Stefan Monnier <=