aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-02-06 23:01:44 +0800
committerGitHub <noreply@github.com>2024-02-06 23:01:44 +0800
commit0db6946b39fd031c9fe3c38a7dd54efa9131a6ac (patch)
tree35612a0dd0ca7f34a9936953a4e0c2a74ef58566
parent7f4627fe4812da5526b62f9463459cf12931f10e (diff)
downloadrneovim-0db6946b39fd031c9fe3c38a7dd54efa9131a6ac.tar.gz
rneovim-0db6946b39fd031c9fe3c38a7dd54efa9131a6ac.tar.bz2
rneovim-0db6946b39fd031c9fe3c38a7dd54efa9131a6ac.zip
fix(column): handle w_redr_statuscol at end filler lines (#27365)
There doesn't seem to be an easy solution that doesn't involve a goto. Also remove duplicate assignment in win_line().
-rw-r--r--src/nvim/drawline.c1
-rw-r--r--src/nvim/drawscreen.c5
-rw-r--r--test/functional/ui/statuscolumn_spec.lua16
3 files changed, 21 insertions, 1 deletions
diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c
index 174543242f..c275fcd7d4 100644
--- a/src/nvim/drawline.c
+++ b/src/nvim/drawline.c
@@ -1580,7 +1580,6 @@ int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, int col_rows, s
// win_line_start(wp, &wlv);
wlv.col = 0;
wlv.off = 0;
- draw_cols = true;
continue;
} else {
break;
diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c
index 4b7dd40616..f23c0a0fd3 100644
--- a/src/nvim/drawscreen.c
+++ b/src/nvim/drawscreen.c
@@ -2346,6 +2346,7 @@ static void win_update(win_T *wp)
// 'statuscolumn' width has changed or errored, start from the top.
if (wp->w_redr_statuscol) {
+redr_statuscol:
wp->w_redr_statuscol = false;
idx = 0;
row = 0;
@@ -2429,6 +2430,10 @@ static void win_update(win_T *wp)
spellvars_T zero_spv = { 0 };
foldinfo_T zero_foldinfo = { 0 };
row = win_line(wp, wp->w_botline, row, wp->w_grid.rows, 0, &zero_spv, zero_foldinfo);
+ if (wp->w_redr_statuscol) {
+ eof = false;
+ goto redr_statuscol;
+ }
}
} else if (dollar_vcol == -1) {
wp->w_botline = lnum;
diff --git a/test/functional/ui/statuscolumn_spec.lua b/test/functional/ui/statuscolumn_spec.lua
index 2058f9a59d..3a3ff25c39 100644
--- a/test/functional/ui/statuscolumn_spec.lua
+++ b/test/functional/ui/statuscolumn_spec.lua
@@ -515,6 +515,22 @@ describe('statuscolumn', function()
set cpoptions-=n nocursorline relativenumber
set stc=%{v:virtnum<0?'virtual':(!v:virtnum?'buffer':'wrapped')}%=%{'\ '.v:virtnum.'\ '.v:lnum.'\ '.v:relnum}
]])
+ screen:expect([[
+ {1:buffer 0 12 3}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
+ {1:wrapped 1 12 3}aaaaaaaaaaa |
+ {1:buffer 0 13 2}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
+ {1:wrapped 1 13 2}aaaaaaaaaaa |
+ {1:buffer 0 14 1}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
+ {1:wrapped 1 14 1}aaaaaaaaaaa |
+ {1:buffer 0 15 0}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
+ {1:wrapped 1 15 0}aaaaaaaaaaa^ aaaaaaaaaaaaaaaaaaaaaaaaaaa|
+ {1:wrapped 2 15 0}aaaaaaaaaaaaaaaaaaaaaaa |
+ {1:virtual-3 15 0}virt_line1 |
+ {1:virtual-2 15 0}virt_line2 |
+ {1:virtual-1 15 0}END |
+ {0:~ }|
+ |
+ ]])
feed('kk')
screen:expect([[
{1:buffer 0 12 1}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|