Commit a6d53864 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(read_key_sequence) [!USE_TEXT_PROPERTIES]: Fix typo.

(menu_bar_items) [!USE_TEXT_PROPERTIES]: Likewise.

(kbd_buffer_get_event):
Shorten the first MULTI_FRAME conditional.

(lispy_function_keys): Add `remove' key.

(read_key_sequence): Take out previous change.
If we changed buffers during read_char, go to replay_sequence.
parent ffb4fdde
...@@ -1874,11 +1874,11 @@ kbd_buffer_get_event () ...@@ -1874,11 +1874,11 @@ kbd_buffer_get_event ()
#endif #endif
} }
#ifdef MULTI_FRAME
/* If this event is on a different frame, return a switch-frame this /* If this event is on a different frame, return a switch-frame this
time, and leave the event in the queue for next time. */ time, and leave the event in the queue for next time. */
else else
{ {
#ifdef MULTI_FRAME
Lisp_Object frame = event->frame_or_window; Lisp_Object frame = event->frame_or_window;
Lisp_Object focus; Lisp_Object focus;
...@@ -1893,6 +1893,7 @@ kbd_buffer_get_event () ...@@ -1893,6 +1893,7 @@ kbd_buffer_get_event ()
&& XFRAME (frame) != selected_frame) && XFRAME (frame) != selected_frame)
obj = make_lispy_switch_frame (frame); obj = make_lispy_switch_frame (frame);
internal_last_event_frame = frame; internal_last_event_frame = frame;
#endif /* MULTI_FRAME */
/* If we didn't decide to make a switch-frame event, go ahead /* If we didn't decide to make a switch-frame event, go ahead
and build a real event from the queue entry. */ and build a real event from the queue entry. */
...@@ -1909,7 +1910,6 @@ kbd_buffer_get_event () ...@@ -1909,7 +1910,6 @@ kbd_buffer_get_event ()
kbd_fetch_ptr = event + 1; kbd_fetch_ptr = event + 1;
} }
} }
#endif
} }
else if (do_mouse_tracking && mouse_moved) else if (do_mouse_tracking && mouse_moved)
{ {
...@@ -2024,7 +2024,7 @@ static char *lispy_function_keys[] = ...@@ -2024,7 +2024,7 @@ static char *lispy_function_keys[] =
{ {
/* X Keysym value */ /* X Keysym value */
0, 0, 0, 0, 0, 0, 0, 0, /* 0xff00 */ "remove", 0, 0, 0, 0, 0, 0, 0, /* 0xff00 */
"backspace", "backspace",
"tab", "tab",
"linefeed", "linefeed",
...@@ -3097,7 +3097,7 @@ menu_bar_items () ...@@ -3097,7 +3097,7 @@ menu_bar_items ()
#ifdef USE_TEXT_PROPERTIES #ifdef USE_TEXT_PROPERTIES
maps[nmaps-2] = get_local_map (PT, current_buffer); maps[nmaps-2] = get_local_map (PT, current_buffer);
#else #else
maps[nmaps-2] = current_buffer->local_map; maps[nmaps-2] = current_buffer->keymap;
#endif #endif
maps[nmaps-1] = global_map; maps[nmaps-1] = global_map;
} }
...@@ -3632,10 +3632,14 @@ read_key_sequence (keybuf, bufsize, prompt) ...@@ -3632,10 +3632,14 @@ read_key_sequence (keybuf, bufsize, prompt)
echo_start = echo_length (); echo_start = echo_length ();
keys_start = this_command_key_count; keys_start = this_command_key_count;
#if 0 /* This doesn't quite work, because some of the things
that read_char does cannot safely be bypassed.
It seems too risky to try to make this work right. */
/* Read the first char of the sequence specially, before setting /* Read the first char of the sequence specially, before setting
up any keymaps, in case a filter runs and switches buffers on us. */ up any keymaps, in case a filter runs and switches buffers on us. */
first_event = read_char (!prompt, 0, submaps, last_nonmenu_event, first_event = read_char (!prompt, 0, submaps, last_nonmenu_event,
&junk); &junk);
#endif
/* We jump here when the key sequence has been thoroughly changed, and /* We jump here when the key sequence has been thoroughly changed, and
we need to rescan it starting from the beginning. When we jump here, we need to rescan it starting from the beginning. When we jump here,
...@@ -3661,7 +3665,7 @@ read_key_sequence (keybuf, bufsize, prompt) ...@@ -3661,7 +3665,7 @@ read_key_sequence (keybuf, bufsize, prompt)
#ifdef USE_TEXT_PROPERTIES #ifdef USE_TEXT_PROPERTIES
submaps[nmaps-2] = get_local_map (PT, current_buffer); submaps[nmaps-2] = get_local_map (PT, current_buffer);
#else #else
submaps[nmaps-2] = current_buffer->local_map; submaps[nmaps-2] = current_buffer->keymap;
#endif #endif
submaps[nmaps-1] = global_map; submaps[nmaps-1] = global_map;
} }
...@@ -3733,16 +3737,12 @@ read_key_sequence (keybuf, bufsize, prompt) ...@@ -3733,16 +3737,12 @@ read_key_sequence (keybuf, bufsize, prompt)
/* If not, we should actually read a character. */ /* If not, we should actually read a character. */
else else
{ {
struct buffer *buf = current_buffer;
last_real_key_start = t; last_real_key_start = t;
if (! NILP (first_event)) key = read_char (!prompt, nmaps, submaps, last_nonmenu_event,
{ &used_mouse_menu);
key = first_event;
first_event = Qnil;
}
else
key = read_char (!prompt, nmaps, submaps, last_nonmenu_event,
&used_mouse_menu);
/* read_char returns -1 at the end of a macro. /* read_char returns -1 at the end of a macro.
Emacs 18 handles this by returning immediately with a Emacs 18 handles this by returning immediately with a
...@@ -3818,6 +3818,10 @@ read_key_sequence (keybuf, bufsize, prompt) ...@@ -3818,6 +3818,10 @@ read_key_sequence (keybuf, bufsize, prompt)
keybuf[t+1] = key; keybuf[t+1] = key;
mock_input = t + 2; mock_input = t + 2;
/* If we switched buffers while reading the first event,
replay in case we switched keymaps too. */
if (buf != current_buffer && t == 0)
goto replay_sequence;
goto replay_key; goto replay_key;
} }
} }
...@@ -3855,6 +3859,15 @@ read_key_sequence (keybuf, bufsize, prompt) ...@@ -3855,6 +3859,15 @@ read_key_sequence (keybuf, bufsize, prompt)
} }
} }
} }
/* If we switched buffers while reading the first event,
replay in case we switched keymaps too. */
if (buf != current_buffer && t == 0)
{
keybuf[t++] = key;
mock_input = t;
goto replay_sequence;
}
} }
/* We have finally decided that KEY is something we might want /* We have finally decided that KEY is something we might want
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment