aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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()