mirror of
https://github.com/neovim/neovim.git
synced 2025-09-28 22:18:33 +00:00
vim-patch:8.2.5064: no test for what 8.1.0052 fixes (#18881)
Problem: No test for what 8.1.0052 fixes.
Solution: Add a test. (closes vim/vim#10531)
3760bfddc4
This commit is contained in:
@@ -2585,8 +2585,8 @@ static int vgetorpeek(bool advance)
|
|||||||
|
|
||||||
// get a character: 3. from the user - get it
|
// get a character: 3. from the user - get it
|
||||||
if (typebuf.tb_len == 0) {
|
if (typebuf.tb_len == 0) {
|
||||||
// timedout may have been set while waiting for a mapping
|
// timedout may have been set if a mapping with empty RHS
|
||||||
// that has a <Nop> RHS.
|
// fully matched while longer mappings timed out.
|
||||||
timedout = false;
|
timedout = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1081,4 +1081,34 @@ func Test_expr_map_escape_special()
|
|||||||
nunmap …
|
nunmap …
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Testing for mapping after an <Nop> mapping is triggered on timeout.
|
||||||
|
" Test for what patch 8.1.0052 fixes.
|
||||||
|
func Test_map_after_timed_out_nop()
|
||||||
|
CheckRunVimInTerminal
|
||||||
|
|
||||||
|
let lines =<< trim END
|
||||||
|
set timeout timeoutlen=400
|
||||||
|
inoremap ab TEST
|
||||||
|
inoremap a <Nop>
|
||||||
|
END
|
||||||
|
call writefile(lines, 'Xtest_map_after_timed_out_nop')
|
||||||
|
let buf = RunVimInTerminal('-S Xtest_map_after_timed_out_nop', #{rows: 6})
|
||||||
|
|
||||||
|
" Enter Insert mode
|
||||||
|
call term_sendkeys(buf, 'i')
|
||||||
|
" Wait for the "a" mapping to timeout
|
||||||
|
call term_sendkeys(buf, 'a')
|
||||||
|
call term_wait(buf, 500)
|
||||||
|
" Send "a" and wait for a period shorter than 'timeoutlen'
|
||||||
|
call term_sendkeys(buf, 'a')
|
||||||
|
call term_wait(buf, 100)
|
||||||
|
" Send "b", should trigger the "ab" mapping
|
||||||
|
call term_sendkeys(buf, 'b')
|
||||||
|
call WaitForAssert({-> assert_equal("TEST", term_getline(buf, 1))})
|
||||||
|
|
||||||
|
" clean up
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
call delete('Xtest_map_after_timed_out_nop')
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -162,4 +162,21 @@ describe('mapping', function()
|
|||||||
sleep(10)
|
sleep(10)
|
||||||
eq('n', eval('mode()'))
|
eq('n', eval('mode()'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('timeout works after an <Nop> mapping is triggered on timeout vim-patch:8.1.0052', function()
|
||||||
|
command('set timeout timeoutlen=400')
|
||||||
|
command('inoremap ab TEST')
|
||||||
|
command('inoremap a <Nop>')
|
||||||
|
-- Enter Insert mode
|
||||||
|
feed('i')
|
||||||
|
-- Wait for the "a" mapping to time out
|
||||||
|
feed('a')
|
||||||
|
sleep(500)
|
||||||
|
-- Send "a" and wait for a period shorter than 'timeoutlen'
|
||||||
|
feed('a')
|
||||||
|
sleep(100)
|
||||||
|
-- Send "b", should trigger the "ab" mapping
|
||||||
|
feed('b')
|
||||||
|
expect('TEST')
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Reference in New Issue
Block a user