emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/tmm.el,v


From: Nick Roberts
Subject: [Emacs-diffs] Changes to emacs/lisp/tmm.el,v
Date: Tue, 03 Apr 2007 01:07:42 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Nick Roberts <nickrob>  07/04/03 01:07:41

Index: tmm.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/tmm.el,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -b -r1.50 -r1.51
--- tmm.el      30 Mar 2007 06:11:38 -0000      1.50
+++ tmm.el      3 Apr 2007 01:07:41 -0000       1.51
@@ -41,7 +41,7 @@
 (defvar tmm-short-cuts)
 (defvar tmm-old-mb-map nil)
 (defvar tmm-old-comp-map)
-(defvar tmm-c-prompt)
+(defvar tmm-c-prompt nil)
 (defvar tmm-km-list)
 (defvar tmm-next-shortcut-digit)
 (defvar tmm-table-undef)
@@ -71,17 +71,18 @@
                                   (list this-one)))))
        (setq list (cdr list))))
     (if x-position
-       (let ((tail menu-bar)
-             this-one
-             (column 0))
+       (let ((tail menu-bar) (column 0)
+             this-one name)
          (while (and tail (<= column x-position))
            (setq this-one (car tail))
            (if (and (consp this-one)
                     (consp (cdr this-one))
-                    (stringp (nth 1  this-one)))
-               (setq column (+ column
-                               (length (nth 1 this-one))
-                               1)))
+                    (setq name   ; nil if menu-item
+                          (cond ((stringp (nth 1  this-one))
+                                 (nth 1  this-one))
+                                ((stringp (nth 2  this-one))
+                                 (nth 2  this-one)))))
+               (setq column (+ column (length name) 1)))
            (setq tail (cdr tail)))
          (setq menu-bar-item (car this-one))))
     (tmm-prompt menu-bar nil menu-bar-item)))
@@ -517,7 +518,7 @@
 we merge them into a single keymap which shows the proper order of the menu.
 However, for the menu bar itself, the value does not take account
 of `menu-bar-final-items'."
-  (let (allbind bind)
+  (let (allbind bind minorbind localbind globalbind)
     (setq bind (key-binding keyseq))
     ;; If KEYSEQ is a prefix key, then BIND is either nil
     ;; or a symbol defined as a keymap (which satisfies keymapp).
@@ -528,9 +529,21 @@
        (progn
          ;; Otherwise, it is a prefix, so make a list of the subcommands.
          ;; Make a list of all the bindings in all the keymaps.
-         (setq allbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
-         (setq allbind (cons (local-key-binding keyseq) allbind))
-         (setq allbind (cons (global-key-binding keyseq) allbind))
+         (setq minorbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
+         (setq localbind (local-key-binding keyseq))
+         (setq globalbind (cdr (global-key-binding keyseq)))
+
+         ;; If items have been redefined/undefined locally, remove them from
+         ;; the global list.
+         (dolist (minor minorbind)
+           (dolist (item (cdr minor))
+             (setq globalbind (assq-delete-all (car item) globalbind))))
+         (dolist (item (cdr localbind))
+           (setq globalbind (assq-delete-all (car item) globalbind)))
+
+         (setq globalbind (cons 'keymap globalbind))
+         (setq allbind (cons globalbind (cons localbind minorbind)))
+
          ;; Merge all the elements of ALLBIND into one keymap.
          (mapc (lambda (in)
                  (if (and (symbolp in) (keymapp in))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]