fix(signcol): update cursor when signcol changes

Fixes #14195
This commit is contained in:
Lewis Russell
2022-02-20 17:39:40 +00:00
parent eb6e5d0991
commit 9d53791cf8
2 changed files with 17 additions and 9 deletions

View File

@@ -326,6 +326,18 @@ void redraw_buf_status_later(buf_T *buf)
}
}
void redraw_win_signcol(win_T *wp)
{
// If we can compute a change in the automatic sizing of the sign column
// under 'signcolumn=auto:X' and signs currently placed in the buffer, better
// figuring it out here so we can redraw the entire screen for it.
int scwidth = wp->w_scwidth;
wp->w_scwidth = win_signcol_count(wp);
if (wp->w_scwidth != scwidth) {
changed_line_abv_curs_win(wp);
}
}
/// Redraw the parts of the screen that is marked for redraw.
///
/// Most code shouldn't call this directly, rather use redraw_later() and
@@ -790,12 +802,6 @@ static void win_update(win_T *wp, Providers *providers)
linenr_T mod_bot = 0;
int save_got_int;
// If we can compute a change in the automatic sizing of the sign column
// under 'signcolumn=auto:X' and signs currently placed in the buffer, better
// figuring it out here so we can redraw the entire screen for it.
wp->w_scwidth = win_signcol_count(wp);
type = wp->w_redr_type;
if (type >= NOT_VALID) {
@@ -817,6 +823,8 @@ static void win_update(win_T *wp, Providers *providers)
return;
}
redraw_win_signcol(wp);
init_search_hl(wp);
/* Force redraw when width of 'number' or 'relativenumber' column