1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-29 07:58:28 +00:00

Fix rare problems with current-column when text is invisible

* src/indent.c (scan_for_column, compute_motion): Don't miss
compositions when the position to check for composition happens to
be inside invisible text.  (Bug#58791)
This commit is contained in:
Eli Zaretskii 2022-10-26 17:21:45 +03:00
parent 4a1e77ced6
commit d6e08ff459

View File

@ -637,6 +637,11 @@ scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol,
scan_byte = CHAR_TO_BYTE (scan);
if (scan >= end)
goto endloop;
/* We may have over-stepped cmp_it.stop_pos while skipping
the invisible text. If so, update cmp_it.stop_pos. */
if (scan > cmp_it.stop_pos && cmp_it.id < 0)
composition_reseat_it (&cmp_it, scan, scan_byte, end,
w, -1, NULL, Qnil);
}
/* Test reaching the goal column. We do this after skipping
@ -1358,6 +1363,9 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos,
pos = newpos;
pos_byte = CHAR_TO_BYTE (pos);
}
if (newpos > cmp_it.stop_pos && cmp_it.id < 0)
composition_reseat_it (&cmp_it, pos, pos_byte, to,
win, -1, NULL, Qnil);
rarely_quit (++quit_count);
}