diff options
-rw-r--r-- | src/nvim/api/vim.c | 8 | ||||
-rw-r--r-- | src/nvim/eval.c | 11 | ||||
-rw-r--r-- | src/nvim/testdir/test_alot.vim | 1 | ||||
-rw-r--r-- | src/nvim/testdir/test_feedkeys.vim | 10 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
5 files changed, 21 insertions, 11 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index bba7d7b9c2..b1572037cb 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -59,10 +59,6 @@ void nvim_feedkeys(String keys, String mode, Boolean escape_csi) bool typed = false; bool execute = false; - if (keys.size == 0) { - return; - } - for (size_t i = 0; i < mode.size; ++i) { switch (mode.data[i]) { case 'n': remap = false; break; @@ -73,6 +69,10 @@ void nvim_feedkeys(String keys, String mode, Boolean escape_csi) } } + if (keys.size == 0 && !execute) { + return; + } + char *keys_esc; if (escape_csi) { // Need to escape K_SPECIAL and CSI before putting the string in the diff --git a/src/nvim/eval.c b/src/nvim/eval.c index ce04739ee4..e441f96e7e 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -8831,14 +8831,13 @@ static void f_feedkeys(typval_T *argvars, typval_T *rettv, FunPtr fptr) return; keys = get_tv_string(&argvars[0]); - if (*keys != NUL) { - if (argvars[1].v_type != VAR_UNKNOWN) { - flags = get_tv_string_buf(&argvars[1], nbuf); - } - nvim_feedkeys(cstr_as_string((char *)keys), - cstr_as_string((char *)flags), true); + if (argvars[1].v_type != VAR_UNKNOWN) { + flags = get_tv_string_buf(&argvars[1], nbuf); } + + nvim_feedkeys(cstr_as_string((char *)keys), + cstr_as_string((char *)flags), true); } /// "filereadable()" function diff --git a/src/nvim/testdir/test_alot.vim b/src/nvim/testdir/test_alot.vim index daf6f026ba..e5214971b4 100644 --- a/src/nvim/testdir/test_alot.vim +++ b/src/nvim/testdir/test_alot.vim @@ -3,6 +3,7 @@ source test_assign.vim source test_cursor_func.vim +source test_feedkeys.vim source test_cmdline.vim source test_menu.vim source test_popup.vim diff --git a/src/nvim/testdir/test_feedkeys.vim b/src/nvim/testdir/test_feedkeys.vim new file mode 100644 index 0000000000..33cd58949d --- /dev/null +++ b/src/nvim/testdir/test_feedkeys.vim @@ -0,0 +1,10 @@ +" Test feedkeys() function. + +func Test_feedkeys_x_with_empty_string() + new + call feedkeys("ifoo\<Esc>") + call assert_equal('', getline('.')) + call feedkeys('', 'x') + call assert_equal('foo', getline('.')) + quit! +endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index 95ca3f066f..37e3369a1a 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -745,7 +745,7 @@ static int included_patches[] = { // 1536 NA // 1535, // 1534 NA - // 1533, + 1533, // 1532 NA // 1531 NA // 1530 NA |