changeset 26605:46168cb41ba0

(set_text_properties): New function. Like Fset_text_properties, but with additional parameter SIGNAL_AFTER_CHANGE_P. If that is nil, don't signal after changes. (Fset_text_properties): Use it.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 26 Nov 1999 12:07:31 +0000
parents 381c4e70f9fb
children 12a1dfb72160
files src/textprop.c
diffstat 1 files changed, 19 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/textprop.c	Fri Nov 26 12:07:04 1999 +0000
+++ b/src/textprop.c	Fri Nov 26 12:07:31 1999 +0000
@@ -1087,6 +1087,21 @@
   (start, end, properties, object)
      Lisp_Object start, end, properties, object;
 {
+  return set_text_properties (start, end, properties, object, Qt);
+}
+
+
+/* Replace properties of text from START to END with new list of
+   properties PROPERTIES.  OBJECT is the buffer or string containing
+   the text.  OBJECT nil means use the current buffer.
+   SIGNAL_AFTER_CHANGE_P nil means don't signal after changes.  Value
+   is non-nil if properties were replaced; it is nil if there weren't
+   any properties to replace.  */
+
+Lisp_Object
+set_text_properties (start, end, properties, object, signal_after_change_p)
+     Lisp_Object start, end, properties, object, signal_after_change_p;
+{
   register INTERVAL i, unchanged;
   register INTERVAL prev_changed = NULL_INTERVAL;
   register int s, len;
@@ -1148,7 +1163,7 @@
 	  copy_properties (unchanged, i);
 	  i = split_interval_left (i, len);
 	  set_properties (properties, i, object);
-	  if (BUFFERP (object))
+	  if (BUFFERP (object) && !NILP (signal_after_change_p))
 	    signal_after_change (XINT (start), XINT (end) - XINT (start),
 				 XINT (end) - XINT (start));
 
@@ -1159,7 +1174,7 @@
 
       if (LENGTH (i) == len)
 	{
-	  if (BUFFERP (object))
+	  if (BUFFERP (object) && !NILP (signal_after_change_p))
 	    signal_after_change (XINT (start), XINT (end) - XINT (start),
 				 XINT (end) - XINT (start));
 
@@ -1188,7 +1203,7 @@
 	  set_properties (properties, i, object);
 	  if (!NULL_INTERVAL_P (prev_changed))
 	    merge_interval_left (i);
-	  if (BUFFERP (object))
+	  if (BUFFERP (object) && !NILP (signal_after_change_p))
 	    signal_after_change (XINT (start), XINT (end) - XINT (start),
 				 XINT (end) - XINT (start));
 	  return Qt;
@@ -1208,7 +1223,7 @@
       i = next_interval (i);
     }
 
-  if (BUFFERP (object))
+  if (BUFFERP (object) && !NILP (signal_after_change_p))
     signal_after_change (XINT (start), XINT (end) - XINT (start),
 			 XINT (end) - XINT (start));
   return Qt;