summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-03-03 10:31:49 +0000
committerRichard M. Stallman <rms@gnu.org>1995-03-03 10:31:49 +0000
commitdfc21838c09a887ffa729c74831b968f20b71fc5 (patch)
treeb97e574b3eadcc7063cffffcbf7601198e23c4f9 /src
parentd2e9ee068c6cb19161c23da451011adadcd222cb (diff)
downloademacs-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.c21
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)