record_property_change (interval->position, LENGTH (interval),
XCONS (sym)->car, XCONS (value)->car,
object);
+ signal_after_change (interval->position, LENGTH (interval),
+ LENGTH (interval));
}
/* For each new property that has no value at all in the old plist,
record_property_change (interval->position, LENGTH (interval),
XCONS (sym)->car, Qnil,
object);
+ signal_after_change (interval->position, LENGTH (interval),
+ LENGTH (interval));
}
}
make_number (i->position + LENGTH (i)));
record_property_change (i->position, LENGTH (i),
sym1, Fcar (this_cdr), object);
+ signal_after_change (i->position, LENGTH (i), LENGTH (i));
}
/* I's property has a different value -- change it */
make_number (i->position + LENGTH (i)));
record_property_change (i->position, LENGTH (i),
sym1, Qnil, object);
+ signal_after_change (i->position, LENGTH (i), LENGTH (i));
}
i->plist = Fcons (sym1, Fcons (val1, i->plist));
changed++;
record_property_change (i->position, LENGTH (i),
sym, Fcar (Fcdr (current_plist)),
object);
+ signal_after_change (i->position, LENGTH (i), LENGTH (i));
}
current_plist = Fcdr (Fcdr (current_plist));
make_number (i->position + LENGTH (i)));
record_property_change (i->position, LENGTH (i),
sym, Fcar (Fcdr (this)), object);
+ signal_after_change (i->position, LENGTH (i), LENGTH (i));
}
Fsetcdr (Fcdr (tail2), Fcdr (Fcdr (this)));
if (LENGTH (i) > len)
i = split_interval_left (i, len);
- if (NULL_INTERVAL_P (prev_changed))
- set_properties (props, i, object);
- else
+ /* We have to call set_properties even if we are going to
+ merge the intervals, so as to make the undo records
+ and cause redisplay to happen. */
+ set_properties (props, i, object);
+ if (!NULL_INTERVAL_P (prev_changed))
merge_interval_left (i);
return Qt;
}
len -= LENGTH (i);
+
+ /* We have to call set_properties even if we are going to
+ merge the intervals, so as to make the undo records
+ and cause redisplay to happen. */
+ set_properties (props, i, object);
if (NULL_INTERVAL_P (prev_changed))
- {
- set_properties (props, i, object);
- prev_changed = i;
- }
+ prev_changed = i;
else
prev_changed = i = merge_interval_left (i);
if (NILP (Vinhibit_read_only) || CONSP (Vinhibit_read_only))
{
/* If I and PREV differ we need to check for the read-only
- property together with its stickyness. If either I or
+ property together with its stickiness. If either I or
PREV are 0, this check is all we need.
We have to take special care, since read-only may be
indirectly defined via the category property. */