# HG changeset patch # User Richard M. Stallman # Date 742597447 0 # Node ID 9fd5ecacfbbb0c35cdced76fb9829d305a1fc2a7 # Parent 3a8e54f78c5402b0c3a5cdc8fe1bb46798d0dc4a (Qinsert_in_front_hooks, Qinsert_behind_hooks): New vars. (syms_of_textprop): Set them up. (set_properties): Call modify_region. (remove_properties): Call modify_region before record_property_change. (add_properties): Likewise. diff -r 3a8e54f78c54 -r 9fd5ecacfbbb src/textprop.c --- a/src/textprop.c Tue Jul 13 20:44:02 1993 +0000 +++ b/src/textprop.c Tue Jul 13 21:04:07 1993 +0000 @@ -44,6 +44,8 @@ Lisp_Object Qpoint_left; Lisp_Object Qpoint_entered; Lisp_Object Qmodification_hooks; +Lisp_Object Qinsert_in_front_hooks; +Lisp_Object Qinsert_behind_hooks; Lisp_Object Qcategory; Lisp_Object Qlocal_map; @@ -276,9 +278,14 @@ sym = XCONS (value)->cdr) if (! EQ (property_value (properties, XCONS (sym)->car), XCONS (value)->car)) - record_property_change (interval->position, LENGTH (interval), - XCONS (sym)->car, XCONS (value)->car, - object); + { + modify_region (XBUFFER (object), + make_number (interval->position), + make_number (interval->position + LENGTH (interval))); + record_property_change (interval->position, LENGTH (interval), + XCONS (sym)->car, XCONS (value)->car, + object); + } /* For each new property that has no value at all in the old plist, make an undo record binding it to nil, so it will be removed. */ @@ -286,9 +293,14 @@ PLIST_ELT_P (sym, value); sym = XCONS (value)->cdr) if (EQ (property_value (interval->plist, XCONS (sym)->car), Qunbound)) - record_property_change (interval->position, LENGTH (interval), - XCONS (sym)->car, Qnil, - object); + { + modify_region (XBUFFER (object), + make_number (interval->position), + make_number (interval->position + LENGTH (interval))); + record_property_change (interval->position, LENGTH (interval), + XCONS (sym)->car, Qnil, + object); + } } /* Store new properties. */ @@ -338,11 +350,11 @@ /* Record this change in the buffer, for undo purposes. */ if (XTYPE (object) == Lisp_Buffer) { - record_property_change (i->position, LENGTH (i), - sym1, Fcar (this_cdr), object); modify_region (XBUFFER (object), make_number (i->position), make_number (i->position + LENGTH (i))); + record_property_change (i->position, LENGTH (i), + sym1, Fcar (this_cdr), object); } /* I's property has a different value -- change it */ @@ -356,11 +368,11 @@ /* Record this change in the buffer, for undo purposes. */ if (XTYPE (object) == Lisp_Buffer) { - record_property_change (i->position, LENGTH (i), - sym1, Qnil, object); modify_region (XBUFFER (object), make_number (i->position), make_number (i->position + LENGTH (i))); + record_property_change (i->position, LENGTH (i), + sym1, Qnil, object); } i->plist = Fcons (sym1, Fcons (val1, i->plist)); changed++; @@ -394,12 +406,12 @@ { if (XTYPE (object) == Lisp_Buffer) { + modify_region (XBUFFER (object), + make_number (i->position), + make_number (i->position + LENGTH (i))); record_property_change (i->position, LENGTH (i), sym, Fcar (Fcdr (current_plist)), object); - modify_region (XBUFFER (object), - make_number (i->position), - make_number (i->position + LENGTH (i))); } current_plist = Fcdr (Fcdr (current_plist)); @@ -415,11 +427,11 @@ { if (XTYPE (object) == Lisp_Buffer) { - record_property_change (i->position, LENGTH (i), - sym, Fcar (Fcdr (this)), object); modify_region (XBUFFER (object), make_number (i->position), make_number (i->position + LENGTH (i))); + record_property_change (i->position, LENGTH (i), + sym, Fcar (Fcdr (this)), object); } Fsetcdr (Fcdr (tail2), Fcdr (Fcdr (this))); @@ -1132,6 +1144,10 @@ Qpoint_entered = intern ("point-entered"); staticpro (&Qmodification_hooks); Qmodification_hooks = intern ("modification-hooks"); + staticpro (&Qinsert_in_front_hooks); + Qinsert_in_front_hooks = intern ("insert-in-front-hooks"); + staticpro (&Qinsert_behind_hooks); + Qinsert_behind_hooks = intern ("insert-behind-hooks"); defsubr (&Stext_properties_at); defsubr (&Sget_text_property);