aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2025-04-23 01:50:13 -0400
committerStefan Monnier2025-04-23 01:54:39 -0400
commita57c107ab567d397133e3e0a55bb29f69cfa9d29 (patch)
treef7cfae0eeebcf133685f6d30fe4ba87cdfc9e7b9
parentc8beb5f0236476175b9ae9afb14c3291026e226c (diff)
downloademacs-a57c107ab567d397133e3e0a55bb29f69cfa9d29.tar.gz
emacs-a57c107ab567d397133e3e0a55bb29f69cfa9d29.zip
(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.
-rw-r--r--src/insdel.c5
-rw-r--r--src/marker-vector.c22
-rw-r--r--src/marker-vector.h1
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,
252{ 252{
253 text_index_invalidate (current_buffer, from_byte); 253 text_index_invalidate (current_buffer, from_byte);
254 adjust_suspend_auto_hscroll (from, to); 254 adjust_suspend_auto_hscroll (from, to);
255 marker_vector_adjust_for_delete (current_buffer, from, to); 255 marker_vector_adjust_for_replace (current_buffer, from, to - from, 0);
256 adjust_overlays_for_delete (from, to - from); 256 adjust_overlays_for_delete (from, to - from);
257} 257}
258 258
@@ -303,8 +303,6 @@ adjust_markers_for_replace (ptrdiff_t from, ptrdiff_t from_byte,
303 ptrdiff_t old_chars, ptrdiff_t old_bytes, 303 ptrdiff_t old_chars, ptrdiff_t old_bytes,
304 ptrdiff_t new_chars, ptrdiff_t new_bytes) 304 ptrdiff_t new_chars, ptrdiff_t new_bytes)
305{ 305{
306 text_index_invalidate (current_buffer, from_byte);
307
308 if (old_chars == 0) 306 if (old_chars == 0)
309 { 307 {
310 /* Just an insertion: markers at FROM may need to move or not depending 308 /* 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,
317 return; 315 return;
318 } 316 }
319 317
318 text_index_invalidate (current_buffer, from_byte);
320 adjust_suspend_auto_hscroll (from, from + old_chars); 319 adjust_suspend_auto_hscroll (from, from + old_chars);
321 marker_vector_adjust_for_replace (current_buffer, from, old_chars, new_chars); 320 marker_vector_adjust_for_replace (current_buffer, from, old_chars, new_chars);
322 check_markers (); 321 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)
324 return buf_charpos_to_bytepos (m->buffer, charpos); 324 return buf_charpos_to_bytepos (m->buffer, charpos);
325} 325}
326 326
327/* Adjust all marker positions of buffer B for a deletion of a range
328 FROM_CHARPOS to TO_CHARPOS characters. */
329
330void
331marker_vector_adjust_for_delete (struct buffer *b,
332 const ptrdiff_t from_charpos,
333 const ptrdiff_t to_charpos)
334{
335 const ptrdiff_t nchars = to_charpos - from_charpos;
336 struct Lisp_Vector *v = XVECTOR (BUF_MARKERS (b));
337 DO_MARKERS (b, m)
338 {
339 const ptrdiff_t charpos = XFIXNUM (CHARPOS (v, m->entry));
340 eassert (charpos <= Z);
341 if (charpos > to_charpos)
342 CHARPOS (v, m->entry) = make_fixnum (charpos - nchars);
343 else if (charpos > from_charpos)
344 CHARPOS (v, m->entry) = make_fixnum (from_charpos);
345 }
346 END_DO_MARKERS;
347}
348
349/* Adjust marker positions in buffer B for an insertion that stretches 327/* Adjust marker positions in buffer B for an insertion that stretches
350 from FROM_CHARPOS to TO_CHARPOS. When a marker points at the 328 from FROM_CHARPOS to TO_CHARPOS. When a marker points at the
351 insertion point FROM_CHARPOS, we advance it if either its 329 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);
69void marker_vector_set_charpos (struct Lisp_Marker *m, ptrdiff_t charpos); 69void marker_vector_set_charpos (struct Lisp_Marker *m, ptrdiff_t charpos);
70ptrdiff_t marker_vector_charpos (const struct Lisp_Marker *m); 70ptrdiff_t marker_vector_charpos (const struct Lisp_Marker *m);
71ptrdiff_t marker_vector_bytepos (const struct Lisp_Marker *m); 71ptrdiff_t marker_vector_bytepos (const struct Lisp_Marker *m);
72void marker_vector_adjust_for_delete (struct buffer *b, ptrdiff_t from, ptrdiff_t to);
73void marker_vector_adjust_for_insert (struct buffer *b, const ptrdiff_t from, 72void marker_vector_adjust_for_insert (struct buffer *b, const ptrdiff_t from,
74 ptrdiff_t to, bool before_markers); 73 ptrdiff_t to, bool before_markers);
75void marker_vector_adjust_for_replace (struct buffer *b, ptrdiff_t from, 74void marker_vector_adjust_for_replace (struct buffer *b, ptrdiff_t from,