]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.4.601 v7.4.601
authorBram Moolenaar <Bram@vim.org>
Tue, 27 Jan 2015 14:19:24 +0000 (15:19 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 27 Jan 2015 14:19:24 +0000 (15:19 +0100)
Problem:    It is not possible to have feedkeys() insert characters.
Solution:   Add the 'i' flag.

runtime/doc/eval.txt
src/eval.c
src/version.c

index b778e34578edcbd21433069a4cde4b116b109d44..0fb315121f6a48e2ea8a254a0415090d15002c64 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*     For Vim version 7.4.  Last change: 2014 Dec 07
+*eval.txt*     For Vim version 7.4.  Last change: 2015 Jan 27
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2965,9 +2965,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
@@ -2981,6 +2984,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()*
index 242a1f81ec375eca5a7311b6076b4435be62eb19..c9c179a051d6ca9a274d1eeecc6335b4f7bba20e 100644 (file)
@@ -10500,6 +10500,7 @@ f_feedkeys(argvars, rettv)
     typval_T    *rettv UNUSED;
 {
     int                remap = TRUE;
+    int                insert = FALSE;
     char_u     *keys, *flags;
     char_u     nbuf[NUMBUFLEN];
     int                typed = FALSE;
@@ -10524,6 +10525,7 @@ f_feedkeys(argvars, rettv)
                    case 'n': remap = FALSE; break;
                    case 'm': remap = TRUE; break;
                    case 't': typed = TRUE; break;
+                   case 'i': insert = TRUE; break;
                }
            }
        }
@@ -10534,7 +10536,7 @@ f_feedkeys(argvars, rettv)
        if (keys_esc != NULL)
        {
            ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE),
-                                              typebuf.tb_len, !typed, FALSE);
+                                 insert ? 0 : typebuf.tb_len, !typed, FALSE);
            vim_free(keys_esc);
            if (vgetc_busy)
                typebuf_was_filled = TRUE;
index 6b98aca693dba25af7c552d2e89a43e298c9e358..20291a789e3999d4c2fb03a03d5cc8203cebb5a2 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    601,
 /**/
     600,
 /**/