changeset 4381:b0556af4d680

(Qfront_sticky, Qrear_nonsticky): New variables. (syms_of_textprop): Set them up. (Qhidden): New variable. (syms_of_textprop): Set up Qhidden. (property_change_between_p): New function.
author Richard M. Stallman <rms@gnu.org>
date Sat, 31 Jul 1993 21:54:10 +0000
parents 0c7aefc58e0f
children c11d710e0403
files src/textprop.c
diffstat 1 files changed, 40 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/textprop.c	Sat Jul 31 18:41:53 1993 +0000
+++ b/src/textprop.c	Sat Jul 31 21:54:10 1993 +0000
@@ -48,7 +48,10 @@
 
 /* Visual properties text (including strings) may have. */
 Lisp_Object Qforeground, Qbackground, Qfont, Qunderline, Qstipple;
-Lisp_Object Qinvisible, Qread_only;
+Lisp_Object Qinvisible, Qread_only, Qhidden;
+
+/* Sticky properties */
+Lisp_Object Qfront_sticky, Qrear_nonsticky;
 
 /* If o1 is a cons whose cdr is a cons, return non-zero and set o2 to
    the o1's cdr.  Otherwise, return zero.  This is handy for
@@ -543,7 +546,36 @@
     return Qnil;
 
   return next->position - (XTYPE (object) == Lisp_String);
-;
+}
+
+/* Return 1 if there's a change in some property between BEG and END.  */
+
+int
+property_change_between_p (beg, end)
+     int beg, end;
+{
+  register INTERVAL i, next;
+  Lisp_Object object, pos;
+
+  XSET (object, Lisp_Buffer, current_buffer);
+  XFASTINT (pos) = beg;
+
+  i = validate_interval_range (object, &pos, &pos, soft);
+  if (NULL_INTERVAL_P (i))
+    return 0;
+
+  next = next_interval (i);
+  while (! NULL_INTERVAL_P (next) && intervals_equal (i, next))
+    {
+      next = next_interval (next);
+      if (next->position >= end)
+	return 0;
+    }
+
+  if (NULL_INTERVAL_P (next))
+    return 0;
+
+  return 1;
 }
 
 DEFUN ("next-single-property-change", Fnext_single_property_change,
@@ -1201,10 +1233,16 @@
   Qread_only = intern ("read-only");
   staticpro (&Qinvisible);
   Qinvisible = intern ("invisible");
+  staticpro (&Qhidden);
+  Qhidden = intern ("hidden");
   staticpro (&Qcategory);
   Qcategory = intern ("category");
   staticpro (&Qlocal_map);
   Qlocal_map = intern ("local-map");
+  staticpro (&Qfront_sticky);
+  Qfront_sticky = intern ("front-sticky");
+  staticpro (&Qrear_nonsticky);
+  Qrear_nonsticky = intern ("rear-nonsticky");
 
   /* Properties that text might use to specify certain actions */