*** textprop.c.~1.145.~ 2006-04-15 18:10:14.000000000 +0200 --- textprop.c 2006-04-16 18:44:25.318950490 +0200 *************** *** 1602,1610 **** } } - if (BUFFERP (object)) - modify_region (XBUFFER (object), XINT (start), XINT (end)); - /* We are at the beginning of an interval, with len to scan */ for (;;) { --- 1602,1607 ---- *************** *** 1614,1623 **** if (LENGTH (i) >= len) { if (! interval_has_some_properties_list (properties, i)) ! return modified ? Qt : Qnil; if (LENGTH (i) == len) { remove_properties (Qnil, properties, i, object); if (BUFFERP (object)) signal_after_change (XINT (start), XINT (end) - XINT (start), --- 1611,1630 ---- if (LENGTH (i) >= len) { if (! interval_has_some_properties_list (properties, i)) ! if (modified) ! { ! if (BUFFERP (object)) ! signal_after_change (XINT (start), XINT (end) - XINT (start), ! XINT (end) - XINT (start)); ! return Qt; ! } ! else ! return Qnil; if (LENGTH (i) == len) { + if (!modified && BUFFERP (object)) + modify_region (XBUFFER (object), XINT (start), XINT (end)); remove_properties (Qnil, properties, i, object); if (BUFFERP (object)) signal_after_change (XINT (start), XINT (end) - XINT (start), *************** *** 1629,1634 **** --- 1636,1643 ---- unchanged = i; i = split_interval_left (i, len); copy_properties (unchanged, i); + if (!modified && BUFFERP (object)) + modify_region (XBUFFER (object), XINT (start), XINT (end)); remove_properties (Qnil, properties, i, object); if (BUFFERP (object)) signal_after_change (XINT (start), XINT (end) - XINT (start), *************** *** 1636,1643 **** return Qt; } len -= LENGTH (i); - modified += remove_properties (Qnil, properties, i, object); i = next_interval (i); } } --- 1645,1658 ---- return Qt; } + if (interval_has_some_properties_list (properties, i)) + { + if (!modified && BUFFERP (object)) + modify_region (XBUFFER (object), XINT (start), XINT (end)); + remove_properties (Qnil, properties, i, object); + modified = 1; + } len -= LENGTH (i); i = next_interval (i); } }