mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
vim-patch:9.1.1395: search_stat not reset when pattern differs in case (#34058)
Problem: search_stat not reset when pattern differs in case
(tahzibijafar)
Solution: use STRNCMP instead of MB_STRNICMP macro
There was a long standing todo comment, that using MB_STRNICMP is wrong.
So let's change it to STRNCMP() instead. Even if it not handle
multi-byte characters correctly, then Vim will rather recompute the
search stat, instead of re-using the old (and possibly wrong) value.
fixes: vim/vim#17312
closes: vim/vim#17314
670d0c1468
Co-authored-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
@ -184,4 +184,28 @@ describe('search stat', function()
|
||||
{19:search hit TOP, continuing at BOTTOM} |
|
||||
]])
|
||||
end)
|
||||
|
||||
-- oldtest: Test_search_stat_smartcase_ignorecase()
|
||||
it('when changing case of pattern', function()
|
||||
exec([[
|
||||
set shm-=S ignorecase smartcase
|
||||
call setline(1, [' MainmainmainmmmainmAin', ''])
|
||||
]])
|
||||
|
||||
feed('/main<cr>nnnn')
|
||||
screen:expect([[
|
||||
{10:Mainmainmain}mm{10:main^mAin} |
|
||||
|
|
||||
{1:~ }|*7
|
||||
/main [5/5] |
|
||||
]])
|
||||
|
||||
feed('/mAin<cr>')
|
||||
screen:expect([[
|
||||
Mainmainmainmmmain{10:^mAin} |
|
||||
|
|
||||
{1:~ }|*7
|
||||
/mAin [1/1] |
|
||||
]])
|
||||
end)
|
||||
end)
|
||||
|
@ -459,4 +459,23 @@ func Test_search_stat_backwards()
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
func Test_search_stat_smartcase_ignorecase()
|
||||
CheckRunVimInTerminal
|
||||
|
||||
let lines =<< trim END
|
||||
set shm-=S ignorecase smartcase
|
||||
call setline(1, [' MainmainmainmmmainmAin', ''])
|
||||
END
|
||||
call writefile(lines, 'Xsearchstat_ignorecase', '5')
|
||||
|
||||
let buf = RunVimInTerminal('-S Xsearchstat_ignorecase', #{rows: 10})
|
||||
call term_sendkeys(buf, "/main\<cr>nnnn")
|
||||
call WaitForAssert({-> assert_match('\[5\/5\]', term_getline(buf, 10))}, 1000)
|
||||
|
||||
call term_sendkeys(buf, "/mAin\<cr>")
|
||||
call WaitForAssert({-> assert_match('\[1\/1\]', term_getline(buf, 10))}, 1000)
|
||||
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
Reference in New Issue
Block a user