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 == '%') { | 
