]> granicus.if.org Git - vim/commitdiff
patch 8.2.5064: no test for what 8.1.0052 fixes v8.2.5064
authorzeertzjq <zeertzjq@outlook.com>
Mon, 6 Jun 2022 15:22:46 +0000 (16:22 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 6 Jun 2022 15:22:46 +0000 (16:22 +0100)
Problem:    No test for what 8.1.0052 fixes.
Solution:   Add a test. (closes #10531)

src/getchar.c
src/testdir/test_mapping.vim
src/version.c

index 03d90ac87ea6c166e9f7f0ce5202c298b6559248..2747423b1d787a971812bd849376f7dc83f53f40 100644 (file)
@@ -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)
index 2b5613b889c06c5aee20e5740e465436d040efce..ace6453f493916f1580264709f5856ac29676c73 100644 (file)
@@ -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
index dd585c81afe94c11c0488305a1b4a4a1bc88cf36..6bdc2541a4e611d3438cc2d2351d5275cd51240d 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    5064,
 /**/
     5063,
 /**/