summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-04-01 21:00:48 +0200
committerBram Moolenaar <Bram@vim.org>2016-04-01 21:00:48 +0200
commit9bd547aca41799605c3a3f83444f6725c2d6eda9 (patch)
treeb2beff83ea88b22c3ec9d061ce1bdddb3b712a91
parentb681be175b6991cdc2b8ddd49b0e97e3fe2b201e (diff)
patch 7.4.1692v7.4.1692
Problem: feedkeys('i', 'x') gets stuck, waits for a character to be typed. Solution: Behave like ":normal". (Yasuhiro Matsumoto)
-rw-r--r--src/eval.c3
-rw-r--r--src/testdir/test_feedkeys.vim4
-rw-r--r--src/version.c2
3 files changed, 9 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index b2f4462f3f..e1d69d00de 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -11368,7 +11368,10 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED)
/* Avoid a 1 second delay when the keys start Insert mode. */
msg_scroll = FALSE;
+
+ ++ex_normal_busy;
exec_normal(TRUE);
+ --ex_normal_busy;
msg_scroll |= save_msg_scroll;
}
}
diff --git a/src/testdir/test_feedkeys.vim b/src/testdir/test_feedkeys.vim
index 33cd58949d..70500f2bb5 100644
--- a/src/testdir/test_feedkeys.vim
+++ b/src/testdir/test_feedkeys.vim
@@ -6,5 +6,9 @@ func Test_feedkeys_x_with_empty_string()
call assert_equal('', getline('.'))
call feedkeys('', 'x')
call assert_equal('foo', getline('.'))
+
+ " check it goes back to normal mode immediately.
+ call feedkeys('i', 'x')
+ call assert_equal('foo', getline('.'))
quit!
endfunc
diff --git a/src/version.c b/src/version.c
index d08e7307b6..c1e8fb7b91 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1692,
+/**/
1691,
/**/
1690,