Mercurial > emacs
changeset 3553:5f9688c0b704
(Fadd_text_properties): Don't treat the initial
interval specially, aside from splitting off the part starting
where we want to start changing things.
(Fremove_text_properties): Likewise.
For ending interval, split it left as in Fadd_text_properties.
(Fset_text_properties): Don't set starting interval if it goes
past END. Instead, split it left and set the left part.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 07 Jun 1993 22:17:35 +0000 |
parents | 84fded047f22 |
children | de3a70b61bbe |
files | src/textprop.c |
diffstat | 1 files changed, 9 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/src/textprop.c Mon Jun 07 20:06:34 1993 +0000 +++ b/src/textprop.c Mon Jun 07 22:17:35 1993 +0000 @@ -649,22 +649,10 @@ unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); copy_properties (unchanged, i); - if (LENGTH (i) > len) - { - i = split_interval_left (i, len + 1); - copy_properties (unchanged, i); - add_properties (properties, i, object); - return Qt; - } - - add_properties (properties, i, object); - modified = 1; - len -= LENGTH (i); - i = next_interval (i); } } - /* We are at the beginning of an interval, with len to scan */ + /* We are at the beginning of interval I, with LEN chars to scan. */ for (;;) { if (i == 0) @@ -742,15 +730,17 @@ { unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); - set_properties (props, i, object); if (LENGTH (i) > len) { - i = split_interval_right (i, len); copy_properties (unchanged, i); + i = split_interval_left (i, len + 1); + set_properties (props, i, object); return Qt; } + set_properties (props, i, object); + if (LENGTH (i) == len) return Qt; @@ -828,25 +818,13 @@ return Qnil; len -= got; } - /* Remove the properties from this interval. If it's short - enough, return, splitting it if it's too short. */ + /* Split away the beginning of this interval; what we don't + want to modify. */ else { unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); copy_properties (unchanged, i); - if (LENGTH (i) > len) - { - i = split_interval_left (i, len + 1); - copy_properties (unchanged, i); - remove_properties (props, i, object); - return Qt; - } - - remove_properties (props, i, object); - modified = 1; - len -= LENGTH (i); - i = next_interval (i); } } @@ -868,7 +846,8 @@ } /* i has the properties, and goes past the change limit */ - unchanged = split_interval_right (i, len + 1); + unchanged = i; + i = split_interval_left (i, len + 1); copy_properties (unchanged, i); remove_properties (props, i, object); return Qt;