comparison lisp/subr.el @ 13039:04ffbdd37d2d

(substitute-key-definition): Do recursively scan where KEYMAP has nothing at all.
author Richard M. Stallman <rms@gnu.org>
date Mon, 18 Sep 1995 14:45:44 +0000
parents 2f4bbd557180
children 6d3d7b32c519
comparison
equal deleted inserted replaced
13038:d07703594662 13039:04ffbdd37d2d
127 (if (eq defn olddef) 127 (if (eq defn olddef)
128 (define-key keymap prefix1 (nconc (nreverse skipped) newdef)) 128 (define-key keymap prefix1 (nconc (nreverse skipped) newdef))
129 (if (and (keymapp defn) 129 (if (and (keymapp defn)
130 ;; Avoid recursively scanning 130 ;; Avoid recursively scanning
131 ;; where KEYMAP does not have a submap. 131 ;; where KEYMAP does not have a submap.
132 (keymapp (lookup-key keymap prefix1)) 132 (let ((elt (lookup-key keymap prefix1)))
133 (or (null elt)
134 (keymapp elt)))
133 ;; Avoid recursively rescanning keymap being scanned. 135 ;; Avoid recursively rescanning keymap being scanned.
134 (not (memq inner-def 136 (not (memq inner-def
135 key-substitution-in-progress))) 137 key-substitution-in-progress)))
136 ;; If this one isn't being scanned already, 138 ;; If this one isn't being scanned already,
137 ;; scan it now. 139 ;; scan it now.
161 (setq inner-def (symbol-function inner-def))) 163 (setq inner-def (symbol-function inner-def)))
162 (if (eq defn olddef) 164 (if (eq defn olddef)
163 (define-key keymap prefix1 165 (define-key keymap prefix1
164 (nconc (nreverse skipped) newdef)) 166 (nconc (nreverse skipped) newdef))
165 (if (and (keymapp defn) 167 (if (and (keymapp defn)
166 (keymapp (lookup-key keymap prefix1)) 168 (let ((elt (lookup-key keymap prefix1)))
169 (or (null elt)
170 (keymapp elt)))
167 (not (memq inner-def 171 (not (memq inner-def
168 key-substitution-in-progress))) 172 key-substitution-in-progress)))
169 (substitute-key-definition olddef newdef keymap 173 (substitute-key-definition olddef newdef keymap
170 inner-def 174 inner-def
171 prefix1))))) 175 prefix1)))))