diff options
author | Richard M. Stallman <rms@gnu.org> | 1994-06-25 22:34:52 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1994-06-25 22:34:52 +0000 |
commit | f6569ed381c9e91721efe5d5b35d55d2ddf8202d (patch) | |
tree | ddc1a645261f2161de741fadeaec0a22e6afd55e /src/buffer.c | |
parent | dcf623e6bb049e5b06fb9093295836dd16ea0912 (diff) | |
download | emacs-f6569ed381c9e91721efe5d5b35d55d2ddf8202d.tar.gz |
(send_process): Major rewrite.
Don't put in a C-d unless a single line is too long.
Read process input whenever output gets stuck.
Relocate BUF if we read input. New arg OBJECT.
(Fprocess_send_region, Fprocess_send_string, process_send_signal)
(Fprocess_send_eof): Pass new arg OBJECT.
Diffstat (limited to 'src/buffer.c')
-rw-r--r-- | src/buffer.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/buffer.c b/src/buffer.c index 3eb61de0c82..9561035e334 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -2115,25 +2115,33 @@ DEFUN ("overlay-put", Foverlay_put, Soverlay_put, 3, 3, 0, (overlay, prop, value) Lisp_Object overlay, prop, value; { - Lisp_Object plist, tail; + Lisp_Object plist, tail, buffer; CHECK_OVERLAY (overlay, 0); - tail = Fmarker_buffer (OVERLAY_START (overlay)); - if (! NILP (tail)) - redisplay_region (XMARKER (OVERLAY_START (overlay))->buffer, - marker_position (OVERLAY_START (overlay)), - marker_position (OVERLAY_END (overlay))); - + buffer = Fmarker_buffer (OVERLAY_START (overlay)); + plist = Fcdr_safe (XCONS (overlay)->cdr); for (tail = plist; CONSP (tail) && CONSP (XCONS (tail)->cdr); tail = XCONS (XCONS (tail)->cdr)->cdr) - { - if (EQ (XCONS (tail)->car, prop)) + if (EQ (XCONS (tail)->car, prop)) + { + /* If actually changing the property, mark redisplay needed. */ + if (! NILP (buffer) && !EQ (XCONS (XCONS (tail)->cdr)->car, value)) + redisplay_region (buffer, + marker_position (OVERLAY_START (overlay)), + marker_position (OVERLAY_END (overlay))); + return XCONS (XCONS (tail)->cdr)->car = value; - } + } + + /* Actually changing the property; mark redisplay needed. */ + if (! NILP (buffer)) + redisplay_region (buffer, + marker_position (OVERLAY_START (overlay)), + marker_position (OVERLAY_END (overlay))); if (! CONSP (XCONS (overlay)->cdr)) XCONS (overlay)->cdr = Fcons (Qnil, Qnil); |