aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-02-20 19:53:49 +0800
committerGitHub <noreply@github.com>2024-02-20 19:53:49 +0800
commita0790558c3097f2813c56e404af30c3e2d8b8983 (patch)
treee68f996439184015a2de06b6f72ff2fbe95fe842 /test/functional/ui
parent69bdcc68234e7f228b667f95b0e65d4ebe8d1f80 (diff)
downloadrneovim-a0790558c3097f2813c56e404af30c3e2d8b8983.tar.gz
rneovim-a0790558c3097f2813c56e404af30c3e2d8b8983.tar.bz2
rneovim-a0790558c3097f2813c56e404af30c3e2d8b8983.zip
fix(extmarks): priority order of inline and non-inline virt_text (#27532)
Diffstat (limited to 'test/functional/ui')
-rw-r--r--test/functional/ui/decorations_spec.lua87
1 files changed, 87 insertions, 0 deletions
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index 9bbae0dae0..0ba33ec3d4 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -2401,6 +2401,93 @@ describe('extmark decorations', function()
helpers.assert_alive()
end)
+
+ it('priority ordering of overlay or win_col virtual text at same position', function()
+ api.nvim_buf_set_extmark(0, ns, 0, 0, { virt_text = {{'A'}}, virt_text_pos = 'overlay', priority = 100 })
+ api.nvim_buf_set_extmark(0, ns, 0, 0, { virt_text = {{'A'}}, virt_text_win_col = 30, priority = 100 })
+ api.nvim_buf_set_extmark(0, ns, 0, 0, { virt_text = {{'BB'}}, virt_text_pos = 'overlay', priority = 90 })
+ api.nvim_buf_set_extmark(0, ns, 0, 0, { virt_text = {{'BB'}}, virt_text_win_col = 30, priority = 90 })
+ api.nvim_buf_set_extmark(0, ns, 0, 0, { virt_text = {{'CCC'}}, virt_text_pos = 'overlay', priority = 80 })
+ api.nvim_buf_set_extmark(0, ns, 0, 0, { virt_text = {{'CCC'}}, virt_text_win_col = 30, priority = 80 })
+ screen:expect([[
+ ^ABC ABC |
+ {1:~ }|*13
+ |
+ ]])
+ end)
+
+ it('priority ordering of inline and non-inline virtual text at same char', function()
+ insert(('?'):rep(40) .. ('!'):rep(30))
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'A'}}, virt_text_pos = 'overlay', priority = 10 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'a'}}, virt_text_win_col = 15, priority = 10 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'BBBB'}}, virt_text_pos = 'inline', priority = 15 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'C'}}, virt_text_pos = 'overlay', priority = 20 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'c'}}, virt_text_win_col = 17, priority = 20 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'DDDD'}}, virt_text_pos = 'inline', priority = 25 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'E'}}, virt_text_pos = 'overlay', priority = 30 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'e'}}, virt_text_win_col = 19, priority = 30 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'FFFF'}}, virt_text_pos = 'inline', priority = 35 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'G'}}, virt_text_pos = 'overlay', priority = 40 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'g'}}, virt_text_win_col = 21, priority = 40 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'HHHH'}}, virt_text_pos = 'inline', priority = 45 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'I'}}, virt_text_pos = 'overlay', priority = 50 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'i'}}, virt_text_win_col = 23, priority = 50 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'JJJJ'}}, virt_text_pos = 'inline', priority = 55 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'K'}}, virt_text_pos = 'overlay', priority = 60 })
+ api.nvim_buf_set_extmark(0, ns, 0, 40, { virt_text = {{'k'}}, virt_text_win_col = 25, priority = 60 })
+ screen:expect([[
+ ???????????????a?c?e????????????????????ABBBCDDDEF|
+ FFGHHHIJJJK!!!!!!!!!!g!i!k!!!!!!!!!!!!!^! |
+ {1:~ }|*12
+ |
+ ]])
+ feed('02x$')
+ screen:expect([[
+ ???????????????a?c?e??????????????????ABBBCDDDEFFF|
+ GHHHIJJJK!!!!!!!!!!!!g!i!k!!!!!!!!!!!^! |
+ {1:~ }|*12
+ |
+ ]])
+ feed('02x$')
+ screen:expect([[
+ ???????????????a?c?e?g??????????????ABBBCDDDEFFFGH|
+ HHIJJJK!!!!!!!!!!!!!!!!i!k!!!!!!!!!^! |
+ {1:~ }|*12
+ |
+ ]])
+ feed('02x$')
+ screen:expect([[
+ ???????????????a?c?e?g????????????ABBBCDDDEFFFGHHH|
+ IJJJK!!!!!!!!!!!!!!!!!!i!k!!!!!!!^! |
+ {1:~ }|*12
+ |
+ ]])
+ command('set nowrap')
+ feed('0')
+ screen:expect([[
+ ^???????????????a?c?e?g?i?k????????ABBBCDDDEFFFGHHH|
+ {1:~ }|*13
+ |
+ ]])
+ feed('2x')
+ screen:expect([[
+ ^???????????????a?c?e?g?i?k??????ABBBCDDDEFFFGHHHIJ|
+ {1:~ }|*13
+ |
+ ]])
+ feed('2x')
+ screen:expect([[
+ ^???????????????a?c?e?g?i?k????ABBBCDDDEFFFGHHHIJJJ|
+ {1:~ }|*13
+ |
+ ]])
+ feed('2x')
+ screen:expect([[
+ ^???????????????a?c?e?g?i?k??ABBBCDDDEFFFGHHHIJJJK!|
+ {1:~ }|*13
+ |
+ ]])
+ end)
end)
describe('decorations: inline virtual text', function()