From d3582e102b7bd53afb58efb37eca866ec528dfbe Mon Sep 17 00:00:00 2001 From: luukvbaal Date: Mon, 13 Nov 2023 04:24:02 +0100 Subject: 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. --- src/nvim/drawline.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c index 2ef1083cf8..5f61848188 100644 --- a/src/nvim/drawline.c +++ b/src/nvim/drawline.c @@ -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--; -- cgit