diff options
-rw-r--r-- | runtime/doc/eval.txt | 10 | ||||
-rw-r--r-- | src/nvim/api/vim.c | 4 | ||||
-rw-r--r-- | src/nvim/version.c | 29 |
3 files changed, 39 insertions, 4 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 456cd5dff6..c4d84c36c3 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2959,9 +2959,12 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()* feedkeys({string} [, {mode}]) *feedkeys()* Characters in {string} are queued for processing as if they - come from a mapping or were typed by the user. They are added - to the end of the typeahead buffer, thus if a mapping is still - being executed these characters come after them. + come from a mapping or were typed by the user. + By default the string is added to the end of the typeahead + buffer, thus if a mapping is still being executed the + characters come after them. Use the 'i' flag to insert before + other characters, they will be executed next, before any + characters from a mapping. The function does not wait for processing of keys contained in {string}. To include special keys into {string}, use double-quotes @@ -2975,6 +2978,7 @@ feedkeys({string} [, {mode}]) *feedkeys()* 't' Handle keys as if typed; otherwise they are handled as if coming from a mapping. This matters for undo, opening folds, etc. + 'i' Insert the string instead of appending (see above). Return value is always 0. filereadable({file}) *filereadable()* diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index a84d3a4c92..e3f426719e 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -57,6 +57,7 @@ void vim_feedkeys(String keys, String mode, Boolean escape_csi) FUNC_ATTR_DEFERRED { bool remap = true; + bool insert = false; bool typed = false; if (keys.size == 0) { @@ -68,6 +69,7 @@ void vim_feedkeys(String keys, String mode, Boolean escape_csi) case 'n': remap = false; break; case 'm': remap = true; break; case 't': typed = true; break; + case 'i': insert = true; break; } } @@ -80,7 +82,7 @@ void vim_feedkeys(String keys, String mode, Boolean escape_csi) keys_esc = keys.data; } ins_typebuf((char_u *)keys_esc, (remap ? REMAP_YES : REMAP_NONE), - typebuf.tb_len, !typed, false); + insert ? 0 : typebuf.tb_len, !typed, false); if (escape_csi) { free(keys_esc); diff --git a/src/nvim/version.c b/src/nvim/version.c index 8a5a3dc07d..748e2ded07 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -179,6 +179,35 @@ static char *(features[]) = { // clang-format off static int included_patches[] = { + //620, + //619, + //618, + //617, + //616, + //615, + //614, + //613, + //612, + //611, + //610, + //609, + //608, + //607, + //606, + //605, + //604, + //603, + //602, + 601, + //600, + //599, + //598, + //597, + //596, + //595, + //594, + //593, + //592, //591 NA //590, //589 NA |