aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuuk van Baal <luukvbaal@gmail.com>2024-01-22 15:34:42 +0100
committerLewis Russell <me@lewisr.dev>2024-01-22 20:39:24 +0000
commit13d50c3b13fb6f2bba948e50fefee451e0a90487 (patch)
tree7669aa40c3eb0187ef3b6000a7fc4d6281df8291
parent51f783f2faa2008bfb4136a15029a78efbc77715 (diff)
downloadrneovim-13d50c3b13fb6f2bba948e50fefee451e0a90487.tar.gz
rneovim-13d50c3b13fb6f2bba948e50fefee451e0a90487.tar.bz2
rneovim-13d50c3b13fb6f2bba948e50fefee451e0a90487.zip
fix(column): clear "b_signcols" when marktree is cleared
-rw-r--r--src/nvim/extmark.c3
-rw-r--r--test/functional/ui/decorations_spec.lua23
2 files changed, 26 insertions, 0 deletions
diff --git a/src/nvim/extmark.c b/src/nvim/extmark.c
index 20a701d5a1..22d01084d4 100644
--- a/src/nvim/extmark.c
+++ b/src/nvim/extmark.c
@@ -309,6 +309,9 @@ void extmark_free_all(buf_T *buf)
marktree_clear(buf->b_marktree);
+ buf->b_signcols.max = 0;
+ CLEAR_FIELD(buf->b_signcols.count);
+
map_destroy(uint32_t, buf->b_extmark_ns);
*buf->b_extmark_ns = (Map(uint32_t, uint32_t)) MAP_INIT;
}
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index 0844ddf249..f133b37e31 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -4998,6 +4998,29 @@ l5
|
]]}
end)
+
+ it('correct width after wiping a buffer', function()
+ screen:try_resize(20, 4)
+ insert(example_test3)
+ feed('gg')
+ local buf = api.nvim_get_current_buf()
+ api.nvim_buf_set_extmark(buf, ns, 0, 0, { sign_text = 'h' })
+ screen:expect{grid=[[
+ h ^l1 |
+ {1: }l2 |
+ {1: }l3 |
+ |
+ ]]}
+ api.nvim_win_set_buf(0, api.nvim_create_buf(false, true))
+ api.nvim_buf_delete(buf, {unload=true, force=true})
+ api.nvim_buf_set_lines(buf, 0, -1, false, {''})
+ api.nvim_win_set_buf(0, buf)
+ screen:expect{grid=[[
+ ^ |
+ {2:~ }|*2
+ |
+ ]]}
+ end)
end)
describe('decorations: virt_text', function()