Mercurial > emacs
changeset 42662:e95258418289
(adjust_after_replace_noundo): New function.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 11 Jan 2002 21:28:23 +0000 |
parents | e85e4d9494b1 |
children | 76fc84e8802f |
files | src/insdel.c |
diffstat | 1 files changed, 50 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/insdel.c Fri Jan 11 21:27:54 2002 +0000 +++ b/src/insdel.c Fri Jan 11 21:28:23 2002 +0000 @@ -1391,6 +1391,56 @@ MODIFF++; } +/* Like adjust_after_replace, but doesn't require PREV_TEXT. + This is for use when undo is not enabled in the current buffer. */ + +void +adjust_after_replace_noundo (from, from_byte, nchars_del, nbytes_del, len, len_byte) + int from, from_byte, nchars_del, nbytes_del, len, len_byte; +{ +#ifdef BYTE_COMBINING_DEBUG + if (count_combining_before (GPT_ADDR, len_byte, from, from_byte) + || count_combining_after (GPT_ADDR, len_byte, from, from_byte)) + abort (); +#endif + + /* Update various buffer positions for the new text. */ + GAP_SIZE -= len_byte; + ZV += len; Z+= len; + ZV_BYTE += len_byte; Z_BYTE += len_byte; + GPT += len; GPT_BYTE += len_byte; + if (GAP_SIZE > 0) *(GPT_ADDR) = 0; /* Put an anchor. */ + + if (nchars_del > 0) + adjust_markers_for_replace (from, from_byte, nchars_del, nbytes_del, + len, len_byte); + else + adjust_markers_for_insert (from, from_byte, + from + len, from_byte + len_byte, 0); + + if (len > nchars_del) + adjust_overlays_for_insert (from, len - nchars_del); + else if (len < nchars_del) + adjust_overlays_for_delete (from, nchars_del - len); + if (BUF_INTERVALS (current_buffer) != 0) + { + offset_intervals (current_buffer, from, len - nchars_del); + } + + if (from < PT) + adjust_point (len - nchars_del, len_byte - nbytes_del); + + /* As byte combining will decrease Z, we must check this again. */ + if (Z - GPT < END_UNCHANGED) + END_UNCHANGED = Z - GPT; + + CHECK_MARKERS (); + + if (len == 0) + evaporate_overlays (from); + MODIFF++; +} + /* Record undo information, adjust markers and position keepers for an insertion of a text from FROM (FROM_BYTE) to TO (TO_BYTE). The text already exists in the current buffer but character length (TO