diff options
| author | Richard M. Stallman | 1994-02-19 00:01:46 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1994-02-19 00:01:46 +0000 |
| commit | 44d798af465ed1d3ca9ccd11d40199a196c77213 (patch) | |
| tree | 3c7e731ca15c33520bdfa5f9d760d3c024bf9be2 | |
| parent | 2eb9adabed31a8b90efcbc2ce62ae954a8b78a59 (diff) | |
| download | emacs-44d798af465ed1d3ca9ccd11d40199a196c77213.tar.gz emacs-44d798af465ed1d3ca9ccd11d40199a196c77213.zip | |
(substitute-key-definition): Don't discard menu strings.
| -rw-r--r-- | lisp/subr.el | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lisp/subr.el b/lisp/subr.el index 4a50dca95f3..ad5b50ccadf 100644 --- a/lisp/subr.el +++ b/lisp/subr.el | |||
| @@ -152,16 +152,17 @@ in KEYMAP as NEWDEF those chars which are defined as OLDDEF in OLDMAP." | |||
| 152 | ;; the inside of the following let that handles array elements. | 152 | ;; the inside of the following let that handles array elements. |
| 153 | (aset vec1 0 char) | 153 | (aset vec1 0 char) |
| 154 | (aset prefix1 (length prefix) char) | 154 | (aset prefix1 (length prefix) char) |
| 155 | (let (inner-def) | 155 | (let (inner-def skipped) |
| 156 | ;; Skip past menu-prompt. | 156 | ;; Skip past menu-prompt. |
| 157 | (while (stringp (car-safe defn)) | 157 | (while (stringp (car-safe defn)) |
| 158 | (setq skipped (cons (car defn) skipped)) | ||
| 158 | (setq defn (cdr defn))) | 159 | (setq defn (cdr defn))) |
| 159 | (setq inner-def defn) | 160 | (setq inner-def defn) |
| 160 | (while (and (symbolp inner-def) | 161 | (while (and (symbolp inner-def) |
| 161 | (fboundp inner-def)) | 162 | (fboundp inner-def)) |
| 162 | (setq inner-def (symbol-function inner-def))) | 163 | (setq inner-def (symbol-function inner-def))) |
| 163 | (if (eq defn olddef) | 164 | (if (eq defn olddef) |
| 164 | (define-key keymap prefix1 newdef) | 165 | (define-key keymap prefix1 (nconc (nreverse skipped) newdef)) |
| 165 | (if (keymapp defn) | 166 | (if (keymapp defn) |
| 166 | (substitute-key-definition olddef newdef keymap | 167 | (substitute-key-definition olddef newdef keymap |
| 167 | inner-def | 168 | inner-def |
| @@ -176,16 +177,18 @@ in KEYMAP as NEWDEF those chars which are defined as OLDDEF in OLDMAP." | |||
| 176 | ;; the inside of the previous let. | 177 | ;; the inside of the previous let. |
| 177 | (aset vec1 0 char) | 178 | (aset vec1 0 char) |
| 178 | (aset prefix1 (length prefix) char) | 179 | (aset prefix1 (length prefix) char) |
| 179 | (let (inner-def) | 180 | (let (inner-def skipped) |
| 180 | ;; Skip past menu-prompt. | 181 | ;; Skip past menu-prompt. |
| 181 | (while (stringp (car-safe defn)) | 182 | (while (stringp (car-safe defn)) |
| 183 | (setq skipped (cons (car defn) skipped)) | ||
| 182 | (setq defn (cdr defn))) | 184 | (setq defn (cdr defn))) |
| 183 | (setq inner-def defn) | 185 | (setq inner-def defn) |
| 184 | (while (and (symbolp inner-def) | 186 | (while (and (symbolp inner-def) |
| 185 | (fboundp inner-def)) | 187 | (fboundp inner-def)) |
| 186 | (setq inner-def (symbol-function inner-def))) | 188 | (setq inner-def (symbol-function inner-def))) |
| 187 | (if (eq defn olddef) | 189 | (if (eq defn olddef) |
| 188 | (define-key keymap prefix1 newdef) | 190 | (define-key keymap prefix1 |
| 191 | (nconc (nreverse skipped) newdef)) | ||
| 189 | (if (keymapp defn) | 192 | (if (keymapp defn) |
| 190 | (substitute-key-definition olddef newdef keymap | 193 | (substitute-key-definition olddef newdef keymap |
| 191 | inner-def | 194 | inner-def |