diff options
| -rw-r--r-- | lisp/subr.el | 6 |
1 files changed, 5 insertions, 1 deletions
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." | |||
| 178 | (setq inner-def (symbol-function inner-def))) | 178 | (setq inner-def (symbol-function inner-def))) |
| 179 | (if (eq defn olddef) | 179 | (if (eq defn olddef) |
| 180 | (define-key keymap prefix1 (nconc (nreverse skipped) newdef)) | 180 | (define-key keymap prefix1 (nconc (nreverse skipped) newdef)) |
| 181 | ;; Avoid recursively rescanning a keymap being scanned. | ||
| 182 | (if (and (keymapp defn) | 181 | (if (and (keymapp defn) |
| 182 | ;; Avoid recursively scanning | ||
| 183 | ;; where KEYMAP does not have a submap. | ||
| 184 | (keymapp (lookup-key keymap prefix1)) | ||
| 185 | ;; Avoid recursively rescanning keymap being scanned. | ||
| 183 | (not (memq inner-def | 186 | (not (memq inner-def |
| 184 | key-substitution-in-progress))) | 187 | key-substitution-in-progress))) |
| 185 | ;; If this one isn't being scanned already, | 188 | ;; 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." | |||
| 212 | (define-key keymap prefix1 | 215 | (define-key keymap prefix1 |
| 213 | (nconc (nreverse skipped) newdef)) | 216 | (nconc (nreverse skipped) newdef)) |
| 214 | (if (and (keymapp defn) | 217 | (if (and (keymapp defn) |
| 218 | (keymapp (lookup-key keymap prefix1)) | ||
| 215 | (not (memq inner-def | 219 | (not (memq inner-def |
| 216 | key-substitution-in-progress))) | 220 | key-substitution-in-progress))) |
| 217 | (substitute-key-definition olddef newdef keymap | 221 | (substitute-key-definition olddef newdef keymap |