commit ed5e70465a38797d88376a2b39219a008a830e55
parent 7380f8ec714d437b4fe2d36c80910aa5c5b53cb6
Author: zeertzjq <zeertzjq@outlook.com>
Date: Sat, 19 Apr 2025 09:00:46 +0800
test(api): nvim_win_text_height with virt_lines around fold (#33529)
Diffstat:
1 file changed, 51 insertions(+), 0 deletions(-)
diff --git a/test/functional/api/window_spec.lua b/test/functional/api/window_spec.lua
@@ -1201,6 +1201,57 @@ describe('API/win', function()
api.nvim_win_text_height(0, { start_row = 0, start_vcol = 220, end_row = 2, end_vcol = 42 })
)
end)
+
+ it('with virtual lines around a fold', function()
+ local X = api.nvim_get_vvar('maxcol')
+ local screen = Screen.new(45, 10)
+ exec([[
+ call setline(1, range(1, 8))
+ 3,6fold
+ ]])
+ local ns = api.nvim_create_namespace('TEST')
+ api.nvim_buf_set_extmark(
+ 0,
+ ns,
+ 1,
+ 0,
+ { virt_lines = { { { 'VIRT LINE 1' } }, { { 'VIRT LINE 2' } } } }
+ )
+ api.nvim_buf_set_extmark(
+ 0,
+ ns,
+ 6,
+ 0,
+ { virt_lines = { { { 'VIRT LINE 3' } } }, virt_lines_above = true }
+ )
+ screen:expect([[
+ ^1 |
+ 2 |
+ VIRT LINE 1 |
+ VIRT LINE 2 |
+ {13:+-- 4 lines: 3······························}|
+ VIRT LINE 3 |
+ 7 |
+ 8 |
+ {1:~ }|
+ |
+ ]])
+ eq({ all = 8, fill = 3 }, api.nvim_win_text_height(0, {}))
+ eq({ all = 5, fill = 2 }, api.nvim_win_text_height(0, { end_row = 2 }))
+ eq({ all = 5, fill = 2 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = X }))
+ eq({ all = 5, fill = 2 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 90 }))
+ eq({ all = 5, fill = 2 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 46 }))
+ eq({ all = 5, fill = 2 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 45 }))
+ eq({ all = 5, fill = 2 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 1 }))
+ eq({ all = 4, fill = 2 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 0 }))
+ eq({ all = 3, fill = 1 }, api.nvim_win_text_height(0, { start_row = 6 }))
+ eq({ all = 2, fill = 0 }, api.nvim_win_text_height(0, { start_row = 6, start_vcol = 0 }))
+ eq({ all = 2, fill = 0 }, api.nvim_win_text_height(0, { start_row = 6, start_vcol = 44 }))
+ eq({ all = 1, fill = 0 }, api.nvim_win_text_height(0, { start_row = 6, start_vcol = 45 }))
+ eq({ all = 1, fill = 0 }, api.nvim_win_text_height(0, { start_row = 6, start_vcol = 89 }))
+ eq({ all = 1, fill = 0 }, api.nvim_win_text_height(0, { start_row = 6, start_vcol = 90 }))
+ eq({ all = 1, fill = 0 }, api.nvim_win_text_height(0, { start_row = 6, start_vcol = X }))
+ end)
end)
describe('open_win', function()