diff options
| author | Richard M. Stallman <rms@gnu.org> | 1995-03-03 10:31:49 +0000 |
|---|---|---|
| committer | Richard M. Stallman <rms@gnu.org> | 1995-03-03 10:31:49 +0000 |
| commit | dfc21838c09a887ffa729c74831b968f20b71fc5 (patch) | |
| tree | b97e574b3eadcc7063cffffcbf7601198e23c4f9 /src | |
| parent | d2e9ee068c6cb19161c23da451011adadcd222cb (diff) | |
| download | emacs-dfc21838c09a887ffa729c74831b968f20b71fc5.tar.gz | |
(exec_sentinel, read_process_output): If running filter
or sentinel changes the local map, call record_asynch_buffer_change.
Diffstat (limited to 'src')
| -rw-r--r-- | src/process.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/process.c b/src/process.c index 67d1609ad9d..1230887888f 100644 --- a/src/process.c +++ b/src/process.c @@ -2329,10 +2329,13 @@ read_process_output (proc, channel) 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 @@ read_process_output (proc, channel) /* 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 @@ static void 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 @@ exec_sentinel (proc, reason) 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) |
