Mercurial > emacs
changeset 2868:998ec1083f3d
* keyboard.c (read_key_sequence): Don't lay down an unwind_protect
to restore the original buffer until we actually get a mouse click.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 18 May 1993 22:30:21 +0000 |
parents | 5b72eb2483e7 |
children | d370b253473b |
files | src/keyboard.c |
diffstat | 1 files changed, 12 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keyboard.c Tue May 18 22:24:14 1993 +0000 +++ b/src/keyboard.c Tue May 18 22:30:21 1993 +0000 @@ -3519,14 +3519,6 @@ if (NILP (Fkeymapp (Vfunction_key_map))) fkey_start = fkey_end = bufsize + 1; - /* We need to save the current buffer in case we switch buffers to - find the right binding for a mouse click. Note that we can't use - save_excursion_{save,restore} here, because they save point as - well as the current buffer; we don't want to save point, because - redisplay may change it, to accomodate a Fset_window_start or - something. */ - record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); - last_nonmenu_event = Qnil; if (INTERACTIVE) @@ -3697,6 +3689,18 @@ mock_input = t + 1; } + /* Arrange to go back to the original buffer once we're + done reading the key sequence. Note that we can't + use save_excursion_{save,restore} here, because they + save point as well as the current buffer; we don't + want to save point, because redisplay may change it, + to accomodate a Fset_window_start or something. We + don't want to do this at the top of the function, + because we may get input from a subprocess which + wants to change the selected window and stuff (say, + emacsclient). */ + record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); + set_buffer_internal (XBUFFER (XWINDOW (window)->buffer)); goto replay_sequence; }