diff options
| author | Miles Bader | 2007-10-19 00:00:21 +0000 |
|---|---|---|
| committer | Miles Bader | 2007-10-19 00:00:21 +0000 |
| commit | 9c8020a8df03dc67a56d7df15664dcf7ace54bf0 (patch) | |
| tree | 09b0646addff3c39f9e96ba89c04bdcc038a87a7 /src/keyboard.c | |
| parent | dfc3268dfa133a2e0a677f1af7c1ee548eae065d (diff) | |
| parent | bd3164743080f3eb5fc316aca7cc5322ca58fe33 (diff) | |
| download | emacs-9c8020a8df03dc67a56d7df15664dcf7ace54bf0.tar.gz emacs-9c8020a8df03dc67a56d7df15664dcf7ace54bf0.zip | |
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 890-898)
- Update from CVS
- Merge from emacs--rel--22
* emacs--rel--22 (patch 122-128)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 257-258)
- Merge from emacs--rel--22
- Update from CVS
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-270
Diffstat (limited to 'src/keyboard.c')
| -rw-r--r-- | src/keyboard.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 6d6ba6e0cc0..2002aded95d 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -8538,7 +8538,7 @@ read_char_x_menu_prompt (nmaps, maps, prev_event, used_mouse_menu) | |||
| 8538 | to indicate that they came from a mouse menu, | 8538 | to indicate that they came from a mouse menu, |
| 8539 | so that when present in last_nonmenu_event | 8539 | so that when present in last_nonmenu_event |
| 8540 | they won't confuse things. */ | 8540 | they won't confuse things. */ |
| 8541 | for (tem = XCDR (value); !NILP (tem); tem = XCDR (tem)) | 8541 | for (tem = XCDR (value); CONSP (tem); tem = XCDR (tem)) |
| 8542 | { | 8542 | { |
| 8543 | record_menu_key (XCAR (tem)); | 8543 | record_menu_key (XCAR (tem)); |
| 8544 | if (SYMBOLP (XCAR (tem)) | 8544 | if (SYMBOLP (XCAR (tem)) |
| @@ -9185,13 +9185,16 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last, | |||
| 9185 | orig_keymap = get_local_map (PT, current_buffer, Qkeymap); | 9185 | orig_keymap = get_local_map (PT, current_buffer, Qkeymap); |
| 9186 | from_string = Qnil; | 9186 | from_string = Qnil; |
| 9187 | 9187 | ||
| 9188 | /* We jump here when the key sequence has been thoroughly changed, and | 9188 | /* The multi-tty merge moved the code below to right after |
| 9189 | we need to rescan it starting from the beginning. When we jump here, | 9189 | `replay_sequence' which caused alll these translation maps to be applied |
| 9190 | keybuf[0..mock_input] holds the sequence we should reread. */ | 9190 | repeatedly, even tho their doc says very clearly they are not applied to |
| 9191 | replay_sequence: | 9191 | their own output. |
| 9192 | 9192 | The reason for this move was: "We may switch keyboards between rescans, | |
| 9193 | /* We may switch keyboards between rescans, so we need to | 9193 | so we need to reinitialize fkey and keytran before each replay". |
| 9194 | reinitialize fkey and keytran before each replay. */ | 9194 | This move was wrong (even if we switch keyboards, keybuf still holds the |
| 9195 | keys we've read already from the original keyboard and some of those keys | ||
| 9196 | may have already been translated). So there may still be a bug out there | ||
| 9197 | lurking. */ | ||
| 9195 | indec.map = indec.parent = current_kboard->Vinput_decode_map; | 9198 | indec.map = indec.parent = current_kboard->Vinput_decode_map; |
| 9196 | fkey.map = fkey.parent = current_kboard->Vlocal_function_key_map; | 9199 | fkey.map = fkey.parent = current_kboard->Vlocal_function_key_map; |
| 9197 | keytran.map = keytran.parent = Vkey_translation_map; | 9200 | keytran.map = keytran.parent = Vkey_translation_map; |
| @@ -9199,6 +9202,11 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last, | |||
| 9199 | fkey.start = fkey.end = 0; | 9202 | fkey.start = fkey.end = 0; |
| 9200 | keytran.start = keytran.end = 0; | 9203 | keytran.start = keytran.end = 0; |
| 9201 | 9204 | ||
| 9205 | /* We jump here when the key sequence has been thoroughly changed, and | ||
| 9206 | we need to rescan it starting from the beginning. When we jump here, | ||
| 9207 | keybuf[0..mock_input] holds the sequence we should reread. */ | ||
| 9208 | replay_sequence: | ||
| 9209 | |||
| 9202 | starting_buffer = current_buffer; | 9210 | starting_buffer = current_buffer; |
| 9203 | first_unbound = bufsize + 1; | 9211 | first_unbound = bufsize + 1; |
| 9204 | 9212 | ||