aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluukvbaal <luukvbaal@gmail.com>2024-01-05 14:34:54 +0100
committerGitHub <noreply@github.com>2024-01-05 21:34:54 +0800
commitc509f4907bf7405c9c2ae3f7eff76c5d552944cc (patch)
tree02c55ab90b937df32ac0b9ce9baaf86fb15c0f89
parente09adfdcffe8a94e09d834bb49f42fd725ddd47b (diff)
downloadrneovim-c509f4907bf7405c9c2ae3f7eff76c5d552944cc.tar.gz
rneovim-c509f4907bf7405c9c2ae3f7eff76c5d552944cc.tar.bz2
rneovim-c509f4907bf7405c9c2ae3f7eff76c5d552944cc.zip
fix(column): fill 'statuscolumn' clickdefs with evaluated width (#26891)
-rw-r--r--src/nvim/statusline.c4
-rw-r--r--test/functional/ui/statuscolumn_spec.lua12
2 files changed, 14 insertions, 2 deletions
diff --git a/src/nvim/statusline.c b/src/nvim/statusline.c
index 1f00b406ec..2a5514b56e 100644
--- a/src/nvim/statusline.c
+++ b/src/nvim/statusline.c
@@ -884,9 +884,9 @@ int build_statuscol_str(win_T *wp, linenr_T lnum, linenr_T relnum, char *buf, st
if (fillclick) {
stl_clear_click_defs(wp->w_statuscol_click_defs, wp->w_statuscol_click_defs_size);
- wp->w_statuscol_click_defs = stl_alloc_click_defs(wp->w_statuscol_click_defs, stcp->width,
+ wp->w_statuscol_click_defs = stl_alloc_click_defs(wp->w_statuscol_click_defs, width,
&wp->w_statuscol_click_defs_size);
- stl_fill_click_defs(wp->w_statuscol_click_defs, clickrec, buf, stcp->width, false);
+ stl_fill_click_defs(wp->w_statuscol_click_defs, clickrec, buf, width, false);
}
return width;
diff --git a/test/functional/ui/statuscolumn_spec.lua b/test/functional/ui/statuscolumn_spec.lua
index 47a68c368e..a27524c9f2 100644
--- a/test/functional/ui/statuscolumn_spec.lua
+++ b/test/functional/ui/statuscolumn_spec.lua
@@ -77,6 +77,18 @@ describe('statuscolumn', function()
1 aaaaa |
|
]])
+ -- Doesn't crash when trying to fill click defs that do not fit (#26845)
+ command('norm gg')
+ command([=[
+ set stc=%@Click@%{v:relnum?v:relnum:(v:lnum==5?'bbbbb':v:lnum)}%T
+ norm 5Gzt | redraw!
+ ]=])
+ screen:expect([[
+ bbbbba^eaaa |
+ 1 aaaaa |
+ 2 aaaaa |
+ |
+ ]])
end)
it("works with 'number' and 'relativenumber'", function()