feat(statuscolumn): re-evaluate for every screen line (#25885)

Problem:  v:virtnum is less useful than it could be.
Solution: Always re-evaluate 'statuscolumn', and update v:virtnum
          accordingly.
This commit is contained in:
luukvbaal
2023-11-13 04:24:02 +01:00
committed by GitHub
parent 2a58aa5709
commit d3582e102b
2 changed files with 17 additions and 23 deletions

View File

@@ -3124,16 +3124,10 @@ int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool number_onl
wlv.need_showbreak = true;
}
if (statuscol.draw) {
if (wlv.row == startrow + wlv.filler_lines) {
statuscol.textp = NULL; // re-evaluate for first non-filler line
} else if (vim_strchr(p_cpo, CPO_NUMCOL) && wlv.row > startrow + wlv.filler_lines) {
if (vim_strchr(p_cpo, CPO_NUMCOL) && wlv.row > startrow + wlv.filler_lines) {
statuscol.draw = false; // don't draw status column if "n" is in 'cpo'
} else if (wlv.row == startrow + wlv.filler_lines + 1) {
statuscol.textp = NULL; // re-evaluate for first wrapped line
} else {
// Draw the already built 'statuscolumn' on the next wrapped or filler line
statuscol.textp = statuscol.text;
statuscol.hlrecp = statuscol.hlrec;
statuscol.textp = NULL; // re-evaluate with new v:virtnum
}
}
wlv.filler_todo--;