diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-08-27 20:04:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-27 20:04:44 +0800 |
commit | 1f49c980368616345d8d0e121fed66a2013f9e96 (patch) | |
tree | 0552d0baa97e3c23b447039eb4db340f67811afe /test | |
parent | 4c69279f97e566277a33b81146b26b7ca20de4f3 (diff) | |
download | rneovim-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.lua | 92 |
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' }) |