Merge pull request #29346 from neovim/backport-29343-to-release-0.10

fix(defaults): default @/Q broken when 'ignorecase' is set
This commit is contained in:
zeertzjq
2024-06-15 10:51:36 +08:00
committed by GitHub
2 changed files with 19 additions and 2 deletions

View File

@ -85,13 +85,13 @@ do
vim.keymap.set(
'x',
'Q',
"mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'",
"mode() ==# 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'",
{ silent = true, expr = true, desc = ':help v_Q-default' }
)
vim.keymap.set(
'x',
'@',
"mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'",
"mode() ==# 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'",
{ silent = true, expr = true, desc = ':help v_@-default' }
)

View File

@ -148,6 +148,23 @@ helloFOO]]
eq({ 0, 1, 1, 0 }, fn.getpos('v'))
end)
it('can be recorded and replayed in Visual mode when ignorecase', function()
command('set ignorecase')
insert('foo BAR BAR foo BAR foo BAR BAR BAR foo BAR BAR')
feed('0vqifofRq')
eq({ 0, 1, 7, 0 }, fn.getpos('.'))
eq({ 0, 1, 1, 0 }, fn.getpos('v'))
feed('Q')
eq({ 0, 1, 19, 0 }, fn.getpos('.'))
eq({ 0, 1, 1, 0 }, fn.getpos('v'))
feed('Q')
eq({ 0, 1, 27, 0 }, fn.getpos('.'))
eq({ 0, 1, 1, 0 }, fn.getpos('v'))
feed('@i')
eq({ 0, 1, 43, 0 }, fn.getpos('.'))
eq({ 0, 1, 1, 0 }, fn.getpos('v'))
end)
it('can be replayed with @ in blockwise Visual mode', function()
insert [[
hello