From a57c107ab567d397133e3e0a55bb29f69cfa9d29 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 23 Apr 2025 01:50:13 -0400 Subject: [PATCH] (marker_vector_adjust_for_delete): Delete function * src/marker-vector.c (marker_vector_adjust_for_delete): Delete function. * src/marker-vector.h (marker_vector_adjust_for_delete): Delete declaration. * src/insdel.c (adjust_markers_for_delete): Use `marker_vector_adjust_for_replace` instead. (adjust_markers_for_replace): Move call to`text_index_invalidate` so we don't do it redundantly. --- src/insdel.c | 5 ++--- src/marker-vector.c | 22 ---------------------- src/marker-vector.h | 1 - 3 files changed, 2 insertions(+), 26 deletions(-) diff --git a/src/insdel.c b/src/insdel.c index 5c7698bc446..28fdcaa5e38 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -252,7 +252,7 @@ adjust_markers_for_delete (ptrdiff_t from, ptrdiff_t from_byte, { text_index_invalidate (current_buffer, from_byte); adjust_suspend_auto_hscroll (from, to); - marker_vector_adjust_for_delete (current_buffer, from, to); + marker_vector_adjust_for_replace (current_buffer, from, to - from, 0); adjust_overlays_for_delete (from, to - from); } @@ -303,8 +303,6 @@ adjust_markers_for_replace (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t old_chars, ptrdiff_t old_bytes, ptrdiff_t new_chars, ptrdiff_t new_bytes) { - text_index_invalidate (current_buffer, from_byte); - if (old_chars == 0) { /* Just an insertion: markers at FROM may need to move or not depending @@ -317,6 +315,7 @@ adjust_markers_for_replace (ptrdiff_t from, ptrdiff_t from_byte, return; } + text_index_invalidate (current_buffer, from_byte); adjust_suspend_auto_hscroll (from, from + old_chars); marker_vector_adjust_for_replace (current_buffer, from, old_chars, new_chars); check_markers (); diff --git a/src/marker-vector.c b/src/marker-vector.c index a85adff15da..3fbae47938e 100644 --- a/src/marker-vector.c +++ b/src/marker-vector.c @@ -324,28 +324,6 @@ marker_vector_bytepos (const struct Lisp_Marker *m) return buf_charpos_to_bytepos (m->buffer, charpos); } -/* Adjust all marker positions of buffer B for a deletion of a range - FROM_CHARPOS to TO_CHARPOS characters. */ - -void -marker_vector_adjust_for_delete (struct buffer *b, - const ptrdiff_t from_charpos, - const ptrdiff_t to_charpos) -{ - const ptrdiff_t nchars = to_charpos - from_charpos; - struct Lisp_Vector *v = XVECTOR (BUF_MARKERS (b)); - DO_MARKERS (b, m) - { - const ptrdiff_t charpos = XFIXNUM (CHARPOS (v, m->entry)); - eassert (charpos <= Z); - if (charpos > to_charpos) - CHARPOS (v, m->entry) = make_fixnum (charpos - nchars); - else if (charpos > from_charpos) - CHARPOS (v, m->entry) = make_fixnum (from_charpos); - } - END_DO_MARKERS; -} - /* Adjust marker positions in buffer B for an insertion that stretches from FROM_CHARPOS to TO_CHARPOS. When a marker points at the insertion point FROM_CHARPOS, we advance it if either its diff --git a/src/marker-vector.h b/src/marker-vector.h index 39d122bc638..04e1f09d306 100644 --- a/src/marker-vector.h +++ b/src/marker-vector.h @@ -69,7 +69,6 @@ void marker_vector_reset (struct buffer *b); void marker_vector_set_charpos (struct Lisp_Marker *m, ptrdiff_t charpos); ptrdiff_t marker_vector_charpos (const struct Lisp_Marker *m); ptrdiff_t marker_vector_bytepos (const struct Lisp_Marker *m); -void marker_vector_adjust_for_delete (struct buffer *b, ptrdiff_t from, ptrdiff_t to); void marker_vector_adjust_for_insert (struct buffer *b, const ptrdiff_t from, ptrdiff_t to, bool before_markers); void marker_vector_adjust_for_replace (struct buffer *b, ptrdiff_t from,