diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-09-03 18:51:47 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-09-03 18:51:47 +0000 |
commit | 9c4d60efa8723a9d9429f94c914e4b87ce85f5e4 (patch) | |
tree | bf350fafcddf7dbce08ccd07e45d82f9803384f5 /src/insdel.c | |
parent | 1f61925ca728853f49f43898a61c7f45fd9d6e8c (diff) | |
download | emacs-9c4d60efa8723a9d9429f94c914e4b87ce85f5e4.tar.gz |
(adjust_markers_for_insert): New function.
(insert_from_buffer_1, insert_from_string_1, insert_1): Call it.
Diffstat (limited to 'src/insdel.c')
-rw-r--r-- | src/insdel.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/insdel.c b/src/insdel.c index 2a6438b9bcb..cd46d0f4dcf 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -246,6 +246,26 @@ adjust_markers (from, to, amount) } } +/* Adjust markers whose insertion-type is t + for an insertion of AMOUNT characters at POS. */ + +static void +adjust_markers_for_insert (pos, amount) + register int pos, amount; +{ + Lisp_Object marker; + + marker = BUF_MARKERS (current_buffer); + + while (!NILP (marker)) + { + register struct Lisp_Marker *m = XMARKER (marker); + if (m->insertion_type && m->bufpos == pos) + m->bufpos += amount; + marker = m->chain; + } +} + /* Add the specified amount to point. This is used only when the value of point changes due to an insert or delete; it does not represent a conceptual change in point as a marker. In particular, point is @@ -377,6 +397,7 @@ insert_1 (string, length, inherit, prepare) ZV += length; Z += length; adjust_overlays_for_insert (PT, length); + adjust_markers_for_insert (PT, length); adjust_point (length); #ifdef USE_TEXT_PROPERTIES @@ -444,6 +465,7 @@ insert_from_string_1 (string, pos, length, inherit) ZV += length; Z += length; adjust_overlays_for_insert (PT, length); + adjust_markers_for_insert (PT, length); /* Only defined if Emacs is compiled with USE_TEXT_PROPERTIES */ graft_intervals_into_buffer (XSTRING (string)->intervals, PT, length, @@ -519,6 +541,7 @@ insert_from_buffer_1 (buf, pos, length, inherit) ZV += length; Z += length; adjust_overlays_for_insert (PT, length); + adjust_markers_for_insert (PT, length); adjust_point (length); /* Only defined if Emacs is compiled with USE_TEXT_PROPERTIES */ |