changeset 8062:ad595e4e165c

(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.
author Richard M. Stallman <rms@gnu.org>
date Sat, 25 Jun 1994 22:34:52 +0000
parents ce94573db44d
children 30861f2f4f84
files src/buffer.c
diffstat 1 files changed, 18 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c	Sat Jun 25 22:34:25 1994 +0000
+++ b/src/buffer.c	Sat Jun 25 22:34:52 1994 +0000
@@ -2115,25 +2115,33 @@
   (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);