fix(move): redraw for 'concealcursor' after changing w_wcol (#31276)

This commit is contained in:
zeertzjq
2024-11-20 08:24:58 +08:00
committed by GitHub
parent f111c32ff9
commit ac7e0ff32f
2 changed files with 34 additions and 8 deletions

View File

@@ -150,25 +150,20 @@ static void redraw_for_cursorline(win_T *wp)
}
}
/// Redraw when w_virtcol changes and
/// Redraw when 'concealcursor' is active, or when w_virtcol changes and:
/// - 'cursorcolumn' is set, or
/// - 'cursorlineopt' contains "screenline", or
/// - 'concealcursor' is active, or
/// - Visual mode is active.
static void redraw_for_cursorcolumn(win_T *wp)
FUNC_ATTR_NONNULL_ALL
{
if (wp->w_valid & VALID_VIRTCOL) {
return;
}
// If the cursor moves horizontally when 'concealcursor' is active, then the
// current line needs to be redrawn to calculate the correct cursor position.
if (wp->w_p_cole > 0 && conceal_cursor_line(wp)) {
redrawWinline(wp, wp->w_cursor.lnum);
}
if (pum_visible()) {
if ((wp->w_valid & VALID_VIRTCOL) || pum_visible()) {
return;
}