summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-30 22:01:40 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-30 22:01:40 +0100
commit8d4ce56a19ed14d13332f94ad592fff2d9a715d5 (patch)
tree48923c078cb612eee726add6977402f9a6f184bc
parent98ad1e17c3f71962862f959c6ba57dd01e8a83c2 (diff)
downloadvim-git-8d4ce56a19ed14d13332f94ad592fff2d9a715d5.tar.gz
patch 8.1.0851: feedkeys() with "L" does not work properlyv8.1.0851
Problem: feedkeys() with "L" does not work properly. Solution: Do not set typebuf_was_filled when using "L". (Ozaki Kiichi, closes #3885)
-rw-r--r--src/evalfunc.c13
-rw-r--r--src/testdir/test_autocmd.vim2
-rw-r--r--src/testdir/test_mapping.vim2
-rw-r--r--src/testdir/test_timers.vim5
-rw-r--r--src/version.c2
5 files changed, 14 insertions, 10 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index c7ba6f308..374e70132 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -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;
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index c502a2617..9e8a02cb4 100644
--- 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
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 921b693a9..c454fc01c 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -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'})
diff --git a/src/testdir/test_timers.vim b/src/testdir/test_timers.vim
index 78ec00567..e900b1f5d 100644
--- 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)
diff --git a/src/version.c b/src/version.c
index 31bfb9a02..1dc9ad006 100644
--- 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,