From: Richard M. Stallman Date: Wed, 16 Nov 1994 20:35:34 +0000 (+0000) Subject: (substitute-key-definition): Don't recursively scan X-Git-Tag: emacs-19.34~5869 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=350b75679b4745e016f60d06fdced67cd385159f;p=emacs.git (substitute-key-definition): Don't recursively scan where OLDMAP has a submap but KEYMAP does not. --- diff --git a/lisp/subr.el b/lisp/subr.el index b0c718a7601..959be2580c4 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -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