changeset 15687:cb501b3c9fb5 v8.1.0851

patch 8.1.0851: feedkeys() with "L" does not work properly commit https://github.com/vim/vim/commit/8d4ce56a19ed14d13332f94ad592fff2d9a715d5 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jan 30 22:01:40 2019 +0100 patch 8.1.0851: feedkeys() with "L" does not work properly Problem: feedkeys() with "L" does not work properly. Solution: Do not set typebuf_was_filled when using "L". (Ozaki Kiichi, closes #3885)
author Bram Moolenaar <Bram@vim.org>
date Wed, 30 Jan 2019 22:15:07 +0100
parents 5faaf013acd4
children f8fc6ce2563e
files src/evalfunc.c src/testdir/test_autocmd.vim src/testdir/test_mapping.vim src/testdir/test_timers.vim src/version.c
diffstat 5 files changed, 15 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3705,15 +3705,18 @@ f_feedkeys(typval_T *argvars, typval_T *
 #endif
 	    }
 	    else
+	    {
 		ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE),
 				  insert ? 0 : typebuf.tb_len, !typed, FALSE);
-	    vim_free(keys_esc);
-	    if (vgetc_busy
+		if (vgetc_busy
 #ifdef FEAT_TIMERS
-		    || timer_busy
-#endif
-		    )
-		typebuf_was_filled = TRUE;
+			|| timer_busy
+#endif
+			)
+		    typebuf_was_filled = TRUE;
+	    }
+	    vim_free(keys_esc);
+
 	    if (execute)
 	    {
 		int save_msg_scroll = msg_scroll;
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -50,7 +50,7 @@ if has('timers')
     au CursorHoldI * let g:triggered += 1
     set updatetime=500
     call job_start(has('win32') ? 'cmd /c echo:' : 'echo',
-          \ {'exit_cb': {j, s -> timer_start(1000, 'ExitInsertMode')}})
+          \ {'exit_cb': {-> timer_start(1000, 'ExitInsertMode')}})
     call feedkeys('a', 'x!')
     call assert_equal(1, g:triggered)
     unlet g:triggered
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -215,7 +215,7 @@ func Test_map_timeout_with_timer_interru
   set timeout timeoutlen=1000
 
   func ExitCb(job, status)
-    let g:timer = timer_start(1, {_ -> feedkeys("3\<Esc>", 't')})
+    let g:timer = timer_start(1, {-> feedkeys("3\<Esc>", 't')})
   endfunc
 
   call job_start([&shell, &shellcmdflag, 'echo'], {'exit_cb': 'ExitCb'})
--- a/src/testdir/test_timers.vim
+++ b/src/testdir/test_timers.vim
@@ -251,15 +251,14 @@ func Test_peek_and_get_char()
 endfunc
 
 func Test_getchar_zero()
-  if has('win32')
+  if has('win32') && !has('gui_running')
     " Console: no low-level input
-    " GUI: somehow doesn't work
     return
   endif
 
   " Measure the elapsed time to avoid a hang when it fails.
   let start = reltime()
-  let id = timer_start(20, {id -> feedkeys('x', 'L')})
+  let id = timer_start(20, {-> feedkeys('x', 'L')})
   let c = 0
   while c == 0 && reltimefloat(reltime(start)) < 0.2
     let c = getchar(0)
--- a/src/version.c
+++ b/src/version.c
@@ -784,6 +784,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    851,
+/**/
     850,
 /**/
     849,