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 | 
