aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-08-27 20:04:44 +0800
committerGitHub <noreply@github.com>2023-08-27 20:04:44 +0800
commit1f49c980368616345d8d0e121fed66a2013f9e96 (patch)
tree0552d0baa97e3c23b447039eb4db340f67811afe /test
parent4c69279f97e566277a33b81146b26b7ca20de4f3 (diff)
downloadrneovim-1f49c980368616345d8d0e121fed66a2013f9e96.tar.gz
rneovim-1f49c980368616345d8d0e121fed66a2013f9e96.tar.bz2
rneovim-1f49c980368616345d8d0e121fed66a2013f9e96.zip
vim-patch:9.0.1792: problem with gj/gk/gM and virtual text (#24898)
Problem: Normal mode "gM", "gj", "gk" commands behave incorrectly with virtual text. Solution: Use linetabsize() instead of linetabsize_str(). closes: vim/vim#12909 https://github.com/vim/vim/commit/d809c0a90387a23aed21ba37d0b65332fb5dafe7
Diffstat (limited to 'test')
-rw-r--r--test/functional/ui/decorations_spec.lua92
1 files changed, 92 insertions, 0 deletions
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index 36d6fea1de..0dd8fd8ad9 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -1811,6 +1811,98 @@ describe('decorations: inline virtual text', function()
]]}
end)
+ it('Normal mode "gM" command works properly', function()
+ command([[call setline(1, '123456789')]])
+ meths.buf_set_extmark(0, ns, 0, 2, { virt_text = { { 'bbb', 'Special' } }, virt_text_pos = 'inline' })
+ meths.buf_set_extmark(0, ns, 0, 7, { virt_text = { { 'bbb', 'Special' } }, virt_text_pos = 'inline' })
+ feed('gM')
+ screen:expect{grid=[[
+ 12{10:bbb}34^567{10:bbb}89 |
+ {1:~ }|
+ |
+ ]]}
+ end)
+
+ local function test_normal_gj_gk()
+ screen:try_resize(60, 6)
+ command([[call setline(1, repeat([repeat('a', 55)], 2))]])
+ meths.buf_set_extmark(0, ns, 0, 40, { virt_text = { { ('b'):rep(10), 'Special' } }, virt_text_pos = 'inline' })
+ meths.buf_set_extmark(0, ns, 1, 40, { virt_text = { { ('b'):rep(10), 'Special' } }, virt_text_pos = 'inline' })
+ screen:expect{grid=[[
+ ^aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ {1:~ }|
+ |
+ ]]}
+ feed('gj')
+ screen:expect{grid=[[
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ ^aaaaa |
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ {1:~ }|
+ |
+ ]]}
+ feed('gj')
+ screen:expect{grid=[[
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ ^aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ {1:~ }|
+ |
+ ]]}
+ feed('gj')
+ screen:expect{grid=[[
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ ^aaaaa |
+ {1:~ }|
+ |
+ ]]}
+ feed('gk')
+ screen:expect{grid=[[
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ ^aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ {1:~ }|
+ |
+ ]]}
+ feed('gk')
+ screen:expect{grid=[[
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ ^aaaaa |
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ {1:~ }|
+ |
+ ]]}
+ feed('gk')
+ screen:expect{grid=[[
+ ^aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{10:bbbbbbbbbb}aaaaaaaaaa|
+ aaaaa |
+ {1:~ }|
+ |
+ ]]}
+ end
+
+ describe('Normal mode "gj" "gk" commands work properly', function()
+ it('with virtualedit=', function()
+ test_normal_gj_gk()
+ end)
+
+ it('with virtualedit=all', function()
+ command('set virtualedit=all')
+ test_normal_gj_gk()
+ end)
+ end)
+
it('cursor positions are correct with multiple inline virtual text', function()
insert('12345678')
meths.buf_set_extmark(0, ns, 0, 4, { virt_text = { { ' virtual text ', 'Special' } }, virt_text_pos = 'inline' })