diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-04-01 21:00:48 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-04-01 21:00:48 +0200 |
commit | 9bd547aca41799605c3a3f83444f6725c2d6eda9 (patch) | |
tree | b2beff83ea88b22c3ec9d061ce1bdddb3b712a91 | |
parent | b681be175b6991cdc2b8ddd49b0e97e3fe2b201e (diff) | |
download | vim-git-9bd547aca41799605c3a3f83444f6725c2d6eda9.tar.gz |
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.c | 3 | ||||
-rw-r--r-- | src/testdir/test_feedkeys.vim | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index b2f4462f3..e1d69d00d 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 33cd58949..70500f2bb 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 d08e7307b..c1e8fb7b9 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, |