]> git.eshelyaron.com Git - emacs.git/commitdiff
(substitute-key-definition): Don't discard menu strings.
authorRichard M. Stallman <rms@gnu.org>
Sat, 19 Feb 1994 00:01:46 +0000 (00:01 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 19 Feb 1994 00:01:46 +0000 (00:01 +0000)
lisp/subr.el

index 4a50dca95f36ec5a29bb430ed69dc99eeface535..ad5b50ccadfeeee20b71a5664a6cb9e6ee655a74 100644 (file)
@@ -152,16 +152,17 @@ in KEYMAP as NEWDEF those chars which are defined as OLDDEF in OLDMAP."
            ;; the inside of the following let that handles array elements.
            (aset vec1 0 char)
            (aset prefix1 (length prefix) char)
-           (let (inner-def)
+           (let (inner-def skipped)
              ;; Skip past menu-prompt.
              (while (stringp (car-safe defn))
+               (setq skipped (cons (car defn) skipped))
                (setq defn (cdr defn)))
              (setq inner-def defn)
              (while (and (symbolp inner-def)
                          (fboundp inner-def))
                (setq inner-def (symbol-function inner-def)))
              (if (eq defn olddef)
-                 (define-key keymap prefix1 newdef)
+                 (define-key keymap prefix1 (nconc (nreverse skipped) newdef))
                (if (keymapp defn)
                    (substitute-key-definition olddef newdef keymap
                                               inner-def
@@ -176,16 +177,18 @@ in KEYMAP as NEWDEF those chars which are defined as OLDDEF in OLDMAP."
                  ;; the inside of the previous let.
                  (aset vec1 0 char)
                  (aset prefix1 (length prefix) char)
-                 (let (inner-def)
+                 (let (inner-def skipped)
                    ;; Skip past menu-prompt.
                    (while (stringp (car-safe defn))
+                     (setq skipped (cons (car defn) skipped))
                      (setq defn (cdr defn)))
                    (setq inner-def defn)
                    (while (and (symbolp inner-def)
                                (fboundp inner-def))
                      (setq inner-def (symbol-function inner-def)))
                    (if (eq defn olddef)
-                       (define-key keymap prefix1 newdef)
+                       (define-key keymap prefix1
+                         (nconc (nreverse skipped) newdef))
                      (if (keymapp defn)
                          (substitute-key-definition olddef newdef keymap
                                                     inner-def