mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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
e3daa06be1
This commit is contained in:
parent
c70aa84b2a
commit
062db5c136
@ -1976,91 +1976,100 @@ describe('decorations: inline virtual text', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
it('text is drawn correctly with a wrapping virtual text', function()
|
it('text is drawn correctly with a wrapping virtual text', function()
|
||||||
screen:try_resize(50, 8)
|
screen:try_resize(60, 8)
|
||||||
feed('o<esc>')
|
exec([[
|
||||||
insert([[aaaaaaa
|
call setline(1, ['', 'aaa', '', 'bbbbbb'])
|
||||||
|
normal gg0
|
||||||
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, 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', 50), '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('gg0')
|
feed('$')
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
{10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:X} |
|
aaa |
|
||||||
aaaaaaa |
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:X} |
|
||||||
bbbbbbb |
|
bbbbbb |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
|
|
|
|
||||||
]]}
|
]]}
|
||||||
|
|
||||||
feed('j')
|
feed('j')
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:X} |
|
aa^a |
|
||||||
^aaaaaaa |
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:X} |
|
||||||
bbbbbbb |
|
bbbbbb |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
|
|
|
|
||||||
]]}
|
]]}
|
||||||
|
|
||||||
feed('j')
|
feed('j')
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:X} |
|
aaa |
|
||||||
aaaaaaa |
|
{10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:X} |
|
||||||
bbbbbbb |
|
bbbbbb |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
|
|
|
|
||||||
]]}
|
]]}
|
||||||
|
|
||||||
feed('j')
|
feed('j')
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:X} |
|
aaa |
|
||||||
aaaaaaa |
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:X} |
|
||||||
^bbbbbbb |
|
bbbbb^b |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
|
|
|
|
||||||
]]}
|
]]}
|
||||||
|
feed('0<C-V>2l2k')
|
||||||
feed('ggic')
|
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
c{10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:XX} |
|
{7:aa}^a |
|
||||||
aaaaaaa |
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
{10:X} |
|
||||||
bbbbbbb |
|
{7:bbb}bbb |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
{8:-- INSERT --} |
|
{8:-- VISUAL BLOCK --} |
|
||||||
]]}
|
]]}
|
||||||
end)
|
feed([[<Esc>/aaa\n\%V<CR>]])
|
||||||
|
|
||||||
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>]])
|
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
foo{12:^foo } |
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{10:barbarbar} |
|
{12:^aaa } |
|
||||||
foofoo |
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{16:search hit BOTTOM, continuing at TOP} |
|
{10:X} |
|
||||||
|
bbbbbb |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{16:search hit BOTTOM, continuing at TOP} |
|
||||||
]]}
|
]]}
|
||||||
feed([[jIbaz<Esc>/foo\nbaz\%V<CR>]])
|
feed('3ggic')
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
foo{12:^foo } |
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{12:baz}{10:barbarbar} |
|
{12:aaa } |
|
||||||
foofoo |
|
c{10:^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
{16:search hit BOTTOM, continuing at TOP} |
|
{10:XX} |
|
||||||
|
bbbbbb |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{8:-- INSERT --} |
|
||||||
|
]]}
|
||||||
|
feed([[<Esc>/aaa\nc\%V<CR>]])
|
||||||
|
screen:expect{grid=[[
|
||||||
|
{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
|
{12:^aaa } |
|
||||||
|
{12:c}{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}|
|
||||||
|
{10:XX} |
|
||||||
|
bbbbbb |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{16:search hit BOTTOM, continuing at TOP} |
|
||||||
]]}
|
]]}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user