diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/drawscreen.c | 5 | ||||
-rw-r--r-- | src/nvim/option.c | 12 | ||||
-rw-r--r-- | src/nvim/optionstr.c | 4 |
3 files changed, 12 insertions, 9 deletions
diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c index 810175aeba..71dbbdabfc 100644 --- a/src/nvim/drawscreen.c +++ b/src/nvim/drawscreen.c @@ -1397,10 +1397,6 @@ static void win_update(win_T *wp, DecorProviders *providers) if (type >= UPD_NOT_VALID) { wp->w_redr_status = true; wp->w_lines_valid = 0; - if (*wp->w_p_stc != NUL) { - wp->w_nrwidth_line_count = 0; // make sure width is reset - wp->w_statuscol_line_count = 0; // make sure width is re-estimated - } } // Window is zero-height: Only need to draw the separator @@ -2528,6 +2524,7 @@ int number_width(win_T *wp) // reset for 'statuscolumn' if (*wp->w_p_stc != NUL) { + wp->w_statuscol_line_count = 0; // make sure width is re-estimated wp->w_nrwidth_width = (wp->w_p_nu || wp->w_p_rnu) * (int)wp->w_p_nuw; return wp->w_nrwidth_width; } diff --git a/src/nvim/option.c b/src/nvim/option.c index aff824e9e2..bcb78ea685 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -2189,9 +2189,8 @@ static const char *set_bool_option(const int opt_idx, char *const varp, const in errmsg = did_set_spelllang(curwin); } } else if ((int *)varp == &curwin->w_p_nu && *curwin->w_p_stc != NUL) { - // When 'statuscolumn' is set and 'number' is changed: - curwin->w_nrwidth_line_count = 0; // make sure width is reset - curwin->w_statuscol_line_count = 0; // make sure width is re-estimated + // When 'number' is changed and 'statuscolumn' is set, make sure width is reset. + curwin->w_nrwidth_line_count = 0; } if ((int *)varp == &curwin->w_p_arab) { @@ -5530,6 +5529,13 @@ int win_signcol_configured(win_T *wp, int *is_fixed) if (*scl == 'n' && (*(scl + 1) == 'o' || (*(scl + 1) == 'u' && (wp->w_p_nu || wp->w_p_rnu)))) { + if (!wp->w_buffer->b_signcols.valid) { + FOR_ALL_WINDOWS_IN_TAB(win, curtab) { + if (*win->w_p_stc != NUL) { + win->w_nrwidth_line_count = 0; + } + } + } if (*wp->w_p_stc != NUL) { buf_signcols(wp->w_buffer, 0); } diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c index 6c6190cb08..1f3fb942ff 100644 --- a/src/nvim/optionstr.c +++ b/src/nvim/optionstr.c @@ -1202,8 +1202,8 @@ static void did_set_statusline(win_T *win, char **varp, char **gvarp, const char if (varp == &p_ruf) { // reset ru_wid first ru_wid = 0; } else if (varp == &win->w_p_stc) { - win->w_nrwidth_line_count = 0; // make sure width is reset - win->w_statuscol_line_count = 0; // make sure width is re-estimated + // reset 'statuscolumn' width + win->w_nrwidth_line_count = 0; } char *s = *varp; if (varp == &p_ruf && *s == '%') { |