summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-06-06 16:22:46 +0100
committerBram Moolenaar <Bram@vim.org>2022-06-06 16:22:46 +0100
commit3760bfddc414e4d3e1c4203db8c22e293cf08d09 (patch)
tree0fb8b02af50f9f58e863f477f07656e3aef01cb5
parent44a3f3353e0407e9fffee138125a6927d1c9e7e5 (diff)
downloadvim-git-3760bfddc414e4d3e1c4203db8c22e293cf08d09.tar.gz
patch 8.2.5064: no test for what 8.1.0052 fixesv8.2.5064
Problem: No test for what 8.1.0052 fixes. Solution: Add a test. (closes #10531)
-rw-r--r--src/getchar.c4
-rw-r--r--src/testdir/test_mapping.vim30
-rw-r--r--src/version.c2
3 files changed, 34 insertions, 2 deletions
diff --git a/src/getchar.c b/src/getchar.c
index 03d90ac87..2747423b1 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -3458,8 +3458,8 @@ vgetorpeek(int advance)
* get a character: 3. from the user - get it
*/
if (typebuf.tb_len == 0)
- // timedout may have been set while waiting for a mapping
- // that has a <Nop> RHS.
+ // timedout may have been set if a mapping with empty RHS
+ // fully matched while longer mappings timed out.
timedout = FALSE;
if (advance)
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 2b5613b88..ace6453f4 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -1685,4 +1685,34 @@ func Test_expr_map_escape_special()
nunmap …
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
diff --git a/src/version.c b/src/version.c
index dd585c81a..6bdc2541a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 5064,
+/**/
5063,
/**/
5062,