]> git.eshelyaron.com Git - emacs.git/commitdiff
(substitute-key-definition): Don't recursively scan
authorRichard M. Stallman <rms@gnu.org>
Wed, 16 Nov 1994 20:35:34 +0000 (20:35 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 16 Nov 1994 20:35:34 +0000 (20:35 +0000)
where OLDMAP has a submap but KEYMAP does not.

lisp/subr.el

index b0c718a7601500044ca30574c9c11dc12dc1d8cd..959be2580c42a2a663cdac5d9a8cb0a1bd0a4fb0 100644 (file)
@@ -178,8 +178,11 @@ in KEYMAP as NEWDEF those chars which are defined as OLDDEF in OLDMAP."
                (setq inner-def (symbol-function inner-def)))
              (if (eq defn olddef)
                  (define-key keymap prefix1 (nconc (nreverse skipped) newdef))
-               ;; Avoid recursively rescanning a keymap being scanned.
                (if (and (keymapp defn)
+                        ;; Avoid recursively scanning
+                        ;; where KEYMAP does not have a submap.
+                        (keymapp (lookup-key keymap prefix1))
+                        ;; Avoid recursively rescanning keymap being scanned.
                         (not (memq inner-def
                                    key-substitution-in-progress)))
                    ;; If this one isn't being scanned already,
@@ -212,6 +215,7 @@ in KEYMAP as NEWDEF those chars which are defined as OLDDEF in OLDMAP."
                        (define-key keymap prefix1
                          (nconc (nreverse skipped) newdef))
                      (if (and (keymapp defn)
+                              (keymapp (lookup-key keymap prefix1))
                               (not (memq inner-def
                                          key-substitution-in-progress)))
                          (substitute-key-definition olddef newdef keymap