]> git.eshelyaron.com Git - emacs.git/commitdiff
(Qfront_sticky, Qrear_nonsticky): New variables.
authorRichard M. Stallman <rms@gnu.org>
Sat, 31 Jul 1993 21:54:10 +0000 (21:54 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 31 Jul 1993 21:54:10 +0000 (21:54 +0000)
(syms_of_textprop): Set them up.

(Qhidden): New variable.
(syms_of_textprop): Set up Qhidden.

(property_change_between_p): New function.

src/textprop.c

index a007e4eb3b2e8f1fe8050f8d7911b36537050c48..b324217907e766b0b2cb70c3f9bf8a47096e556a 100644 (file)
@@ -48,7 +48,10 @@ Lisp_Object Qlocal_map;
 
 /* 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 @@ If the value is non-nil, it is a position greater than POS, never equal.")
     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 @@ percentage by which the left interval tree should not differ from the right.");
   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 */