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

View File

@ -446,7 +446,7 @@ describe('Signs', function()
{1:>>>>>>>>}{6: 1 }a |
{2: }{6: 2 }b |
{2: }{6: 3 }c |
{2: }{6:^ 4 } |
{2: }{6: 4 }^ |
{0:~ }|
{0:~ }|
{0:~ }|
@ -468,7 +468,7 @@ describe('Signs', function()
{1:>>>>>>>>>>}{6: 1 }a |
{2: }{6: 2 }b |
{2: }{6: 3 }c |
{2: ^ }{6: 4 } |
{2: }{6: 4 }^ |
{0:~ }|
{0:~ }|
{0:~ }|
@ -512,7 +512,7 @@ describe('Signs', function()
{1:>>}{6: 1 }a |
{2: }{6: 2 }b |
{2: }{6: 3 }c |
{2: }{6: ^4 } |
{2: }{6: 4 }^ |
{0:~ }|
{0:~ }|
{0:~ }|