]> git.eshelyaron.com Git - emacs.git/commitdiff
(mouse-major-mode-menu): Suppress duplicate menus.
authorGlenn Morris <rgm@gnu.org>
Tue, 8 Jan 2008 05:13:06 +0000 (05:13 +0000)
committerGlenn Morris <rgm@gnu.org>
Tue, 8 Jan 2008 05:13:06 +0000 (05:13 +0000)
lisp/ChangeLog
lisp/mouse.el

index dc7dd5a41794be54a58309fb5102140494bb3ba0..21205e3f8b1b541c38a4b5caf832db088d0d7e12 100644 (file)
@@ -1,4 +1,8 @@
-2008-01-05  Ralf Angeli  <angeli@caeruleus.net>
+2008-01-08  Glenn Morris  <rgm@gnu.org>
+
+       * mouse.el (mouse-major-mode-menu): Suppress duplicate menus.
+
+2008-01-08  Ralf Angeli  <angeli@caeruleus.net>
 
        * textmodes/reftex-toc.el (reftex-make-separate-toc-frame):
        Simplify selection of frame focusing function.
index ec0849f7d06c70aed0b118c3ad4561c42619516a..40debbd532cb58b9e22ea3a6b406c1514b7f22df 100644 (file)
@@ -194,11 +194,22 @@ Default to the Edit menu if the major mode doesn't define a menu."
         (newmap (if ancestor
                     (make-sparse-keymap (concat (format-mode-line mode-name)
                                                  " Mode"))
-                  menu-bar-edit-menu)))
+                  menu-bar-edit-menu))
+        uniq)
     (if ancestor
        ;; Make our menu inherit from the desired keymap which we want
        ;; to display as the menu now.
-       (set-keymap-parent newmap ancestor))
+       ;; Sometimes keymaps contain duplicate menu code, leading to
+       ;; duplicates in the popped-up menu. Avoid this by simply
+       ;; taking the first of any identically-named menus.
+       ;; http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg00469.html
+       (set-keymap-parent newmap
+                          (progn
+                            (dolist (e ancestor)
+                              (unless (and (listp e)
+                                           (assoc (car e) uniq))
+                                (setq uniq (append uniq (list e)))))
+                            uniq)))
     (popup-menu newmap event prefix)))