]> granicus.if.org Git - vim/commitdiff
patch 8.1.0851: feedkeys() with "L" does not work properly v8.1.0851
authorBram Moolenaar <Bram@vim.org>
Wed, 30 Jan 2019 21:01:40 +0000 (22:01 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 30 Jan 2019 21:01:40 +0000 (22:01 +0100)
Problem:    feedkeys() with "L" does not work properly.
Solution:   Do not set typebuf_was_filled when using "L". (Ozaki Kiichi,
            closes #3885)

src/evalfunc.c
src/testdir/test_autocmd.vim
src/testdir/test_mapping.vim
src/testdir/test_timers.vim
src/version.c

index c7ba6f3081605d9c1191d7949ec25a1a087840c4..374e70132fcdd5ce191650ca57c7fed4e1fda89b 100644 (file)
@@ -3705,15 +3705,18 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED)
 #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
+                       || timer_busy
 #endif
-                   )
-               typebuf_was_filled = TRUE;
+                       )
+                   typebuf_was_filled = TRUE;
+           }
+           vim_free(keys_esc);
+
            if (execute)
            {
                int save_msg_scroll = msg_scroll;
index c502a26176849eef9e21572de334f2552c0d823e..9e8a02cb49115fee89f4dd4513f7b3e7bf87cfb7 100644 (file)
@@ -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
index 921b693a97e3a8df2145a6a5d1e84b3e60d33581..c454fc01cc64e5f288416dfc3fe13fb1bb13902b 100644 (file)
@@ -215,7 +215,7 @@ func Test_map_timeout_with_timer_interrupt()
   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'})
index 78ec005676584c5a0e8800a6631784060c35463b..e900b1f5d8a201cfce0313fb61f1da3c56f0e1ed 100644 (file)
@@ -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)
index 31bfb9a02160dd1b438bd7b9b1804b35fa544f3b..1dc9ad0064ffae803f72a39b682124189734aa0c 100644 (file)
@@ -783,6 +783,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    851,
 /**/
     850,
 /**/