diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-08-28 06:02:11 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-08-28 06:10:36 +0800 |
commit | 062db5c136700c35ff700fa4567b6ec8042539c7 (patch) | |
tree | 224f2ef542ff1e727e317c2a71eecc48218b6326 | |
parent | c70aa84b2a79e8ac83a930dd5bf473940274cf1c (diff) | |
download | rneovim-062db5c136700c35ff700fa4567b6ec8042539c7.tar.gz rneovim-062db5c136700c35ff700fa4567b6ec8042539c7.tar.bz2 rneovim-062db5c136700c35ff700fa4567b6ec8042539c7.zip |
vim-patch:9.0.1802: Multiline regex with Visual selection fails with virtual text
Problem: Multiline regex with Visual selection fails when Visual
selection contains virtual text after last char.
Solution: Only include virtual text after last char when getting full
line length.
closes: vim/vim#12908
https://github.com/vim/vim/commit/e3daa06be1a3ba7ced0735582467d092275e591c
-rw-r--r-- | test/functional/ui/decorations_spec.lua | 149 |
1 files changed, 79 insertions, 70 deletions
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua index 5ca554e753..63f8c1e82c 100644 --- a/test/functional/ui/decorations_spec.lua +++ b/test/functional/ui/decorations_spec.lua @@ -1976,91 +1976,100 @@ describe('decorations: inline virtual text', function() end) it('text is drawn correctly with a wrapping virtual text', function() - screen:try_resize(50, 8) - feed('o<esc>') - insert([[aaaaaaa - -bbbbbbb]]) - meths.buf_set_extmark(0, ns, 0, 0, { virt_text = { { string.rep('X', 51), 'Special' } }, virt_text_pos = 'inline' }) - meths.buf_set_extmark(0, ns, 2, 0, { virt_text = { { string.rep('X', 50), 'Special' } }, virt_text_pos = 'inline' }) - feed('gg0') + screen:try_resize(60, 8) + exec([[ + call setline(1, ['', 'aaa', '', 'bbbbbb']) + normal gg0 + ]]) + meths.buf_set_extmark(0, ns, 0, 0, { virt_text = { { string.rep('X', 60), 'Special' } }, virt_text_pos = 'inline' }) + meths.buf_set_extmark(0, ns, 2, 0, { virt_text = { { string.rep('X', 61), 'Special' } }, virt_text_pos = 'inline' }) + feed('$') screen:expect{grid=[[ - {10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - {10:X} | - aaaaaaa | - {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - bbbbbbb | - {1:~ }| - {1:~ }| - | - ]]} - + {10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + aaa | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:X} | + bbbbbb | + {1:~ }| + {1:~ }| + | + ]]} feed('j') screen:expect{grid=[[ - {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - {10:X} | - ^aaaaaaa | - {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - bbbbbbb | - {1:~ }| - {1:~ }| - | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + aa^a | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:X} | + bbbbbb | + {1:~ }| + {1:~ }| + | ]]} - feed('j') screen:expect{grid=[[ - {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - {10:X} | - aaaaaaa | - {10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - bbbbbbb | - {1:~ }| - {1:~ }| - | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + aaa | + {10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:X} | + bbbbbb | + {1:~ }| + {1:~ }| + | ]]} - feed('j') screen:expect{grid=[[ - {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - {10:X} | - aaaaaaa | - {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - ^bbbbbbb | - {1:~ }| - {1:~ }| - | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + aaa | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:X} | + bbbbb^b | + {1:~ }| + {1:~ }| + | ]]} - - feed('ggic') + feed('0<C-V>2l2k') screen:expect{grid=[[ - c{10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - {10:XX} | - aaaaaaa | - {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| - bbbbbbb | - {1:~ }| - {1:~ }| - {8:-- INSERT --} | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {7:aa}^a | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:X} | + {7:bbb}bbb | + {1:~ }| + {1:~ }| + {8:-- VISUAL BLOCK --} | ]]} - end) - - it('regexp \\%V does not count trailing virtual text', function() - screen:try_resize(50, 4) - meths.buf_set_lines(0, 0, -1, true, {'foofoo', '', 'foofoo'}) - meths.buf_set_extmark(0, ns, 1, 0, { virt_text = {{'barbarbar', 'Special'}}, virt_text_pos = 'inline' }) - feed([[<C-V>G5l<Esc>/foo\n\%V<CR>]]) + feed([[<Esc>/aaa\n\%V<CR>]]) + screen:expect{grid=[[ + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {12:^aaa } | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:X} | + bbbbbb | + {1:~ }| + {1:~ }| + {16:search hit BOTTOM, continuing at TOP} | + ]]} + feed('3ggic') screen:expect{grid=[[ - foo{12:^foo } | - {10:barbarbar} | - foofoo | - {16:search hit BOTTOM, continuing at TOP} | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {12:aaa } | + c{10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:XX} | + bbbbbb | + {1:~ }| + {1:~ }| + {8:-- INSERT --} | ]]} - feed([[jIbaz<Esc>/foo\nbaz\%V<CR>]]) + feed([[<Esc>/aaa\nc\%V<CR>]]) screen:expect{grid=[[ - foo{12:^foo } | - {12:baz}{10:barbarbar} | - foofoo | - {16:search hit BOTTOM, continuing at TOP} | + {10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {12:^aaa } | + {12:c}{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:XX} | + bbbbbb | + {1:~ }| + {1:~ }| + {16:search hit BOTTOM, continuing at TOP} | ]]} end) |