diff options
| author | Stefan Monnier | 2025-04-23 01:50:13 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2025-04-23 01:54:39 -0400 |
| commit | a57c107ab567d397133e3e0a55bb29f69cfa9d29 (patch) | |
| tree | f7cfae0eeebcf133685f6d30fe4ba87cdfc9e7b9 | |
| parent | c8beb5f0236476175b9ae9afb14c3291026e226c (diff) | |
| download | emacs-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.c | 5 | ||||
| -rw-r--r-- | src/marker-vector.c | 22 | ||||
| -rw-r--r-- | 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, | |||
| 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 | |||
| 330 | void | ||
| 331 | marker_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); | |||
| 69 | void marker_vector_set_charpos (struct Lisp_Marker *m, ptrdiff_t charpos); | 69 | void marker_vector_set_charpos (struct Lisp_Marker *m, ptrdiff_t charpos); |
| 70 | ptrdiff_t marker_vector_charpos (const struct Lisp_Marker *m); | 70 | ptrdiff_t marker_vector_charpos (const struct Lisp_Marker *m); |
| 71 | ptrdiff_t marker_vector_bytepos (const struct Lisp_Marker *m); | 71 | ptrdiff_t marker_vector_bytepos (const struct Lisp_Marker *m); |
| 72 | void marker_vector_adjust_for_delete (struct buffer *b, ptrdiff_t from, ptrdiff_t to); | ||
| 73 | void marker_vector_adjust_for_insert (struct buffer *b, const ptrdiff_t from, | 72 | void 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); |
| 75 | void marker_vector_adjust_for_replace (struct buffer *b, ptrdiff_t from, | 74 | void marker_vector_adjust_for_replace (struct buffer *b, ptrdiff_t from, |