Mercurial > emacs
changeset 10914:413d44c0bd41
(exec_sentinel, read_process_output): If running filter
or sentinel changes the local map, call record_asynch_buffer_change.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 03 Mar 1995 10:31:49 +0000 |
parents | 880d7c28921c |
children | 4d587fff2aa0 |
files | src/process.c |
diffstat | 1 files changed, 16 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/process.c Fri Mar 03 06:49:59 1995 +0000 +++ b/src/process.c Fri Mar 03 10:31:49 1995 +0000 @@ -2329,10 +2329,13 @@ it up. */ int count = specpdl_ptr - specpdl; Lisp_Object odeactivate; - Lisp_Object obuffer; - + Lisp_Object obuffer, okeymap; + + /* No need to gcpro these, because all we do with them later + is test them for EQness, and none of them should be a string. */ odeactivate = Vdeactivate_mark; - obuffer = Fcurrent_buffer (); + XSETBUFFER (obuffer, current_buffer); + okeymap = current_buffer->keymap; specbind (Qinhibit_quit, Qt); specbind (Qlast_nonmenu_event, Qt); @@ -2352,7 +2355,8 @@ /* Handling the process output should not deactivate the mark. */ Vdeactivate_mark = odeactivate; - if (! EQ (Fcurrent_buffer (), obuffer)) + if (! EQ (Fcurrent_buffer (), obuffer) + || ! EQ (current_buffer->keymap, okeymap)) record_asynch_buffer_change (); if (waiting_for_user_input_p) @@ -3206,12 +3210,16 @@ exec_sentinel (proc, reason) Lisp_Object proc, reason; { - Lisp_Object sentinel, obuffer, odeactivate; + Lisp_Object sentinel, obuffer, odeactivate, okeymap; register struct Lisp_Process *p = XPROCESS (proc); int count = specpdl_ptr - specpdl; + /* No need to gcpro these, because all we do with them later + is test them for EQness, and none of them should be a string. */ odeactivate = Vdeactivate_mark; - obuffer = Fcurrent_buffer (); + XSETBUFFER (obuffer, current_buffer); + okeymap = current_buffer->keymap; + sentinel = p->sentinel; if (NILP (sentinel)) return; @@ -3234,7 +3242,8 @@ restore_match_data (); Vdeactivate_mark = odeactivate; - if (! EQ (Fcurrent_buffer (), obuffer)) + if (! EQ (Fcurrent_buffer (), obuffer) + || ! EQ (current_buffer->keymap, okeymap)) record_asynch_buffer_change (); if (waiting_for_user_input_p)