that don't have such names. */
extern struct buffer buffer_local_symbols;
+
+/* verify_interval_modification saves insertion hooks here
+ to be run later by report_interval_modification. */
+extern Lisp_Object interval_insert_behind_hooks;
+extern Lisp_Object interval_insert_in_front_hooks;
+
\f
extern void delete_all_overlays (struct buffer *);
extern void reset_buffer (struct buffer *);
{
ptrdiff_t count = SPECPDL_INDEX ();
struct rvoe_arg rvoe_arg;
- Lisp_Object tmp;
+ Lisp_Object tmp, save_insert_behind_hooks, save_insert_in_from_hooks;
if (inhibit_modification_hooks)
return;
return;
}
+ /* Save and restore the insert-*-hooks, because other hooks like
+ after-change-functions, called below, could clobber them if they
+ manipulate text properties. */
+ save_insert_behind_hooks = interval_insert_behind_hooks;
+ save_insert_in_from_hooks = interval_insert_in_front_hooks;
+
if (!NILP (combine_after_change_list))
Fcombine_after_change_execute ();
rvoe_arg.errorp = 0;
}
+ interval_insert_behind_hooks = save_insert_behind_hooks;
+ interval_insert_in_front_hooks = save_insert_in_from_hooks;
+
if (buffer_has_overlays ())
report_overlay_modification (make_fixnum (charpos),
make_fixnum (charpos + lenins),
/* verify_interval_modification saves insertion hooks here
to be run later by report_interval_modification. */
-static Lisp_Object interval_insert_behind_hooks;
-static Lisp_Object interval_insert_in_front_hooks;
-
+Lisp_Object interval_insert_behind_hooks;
+Lisp_Object interval_insert_in_front_hooks;
/* Signal a `text-read-only' error. This function makes it easier
to capture that error in GDB by putting a breakpoint on it. */