--- eval.c.000	2006-04-21 14:32:30.000000000 +0300
+++ eval.c	2006-04-21 15:03:50.000000000 +0300
@@ -586,6 +586,7 @@
 static void f_prevnonblank __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_printf __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_pumvisible __ARGS((typval_T *argvars, typval_T *rettv));
+static void f_pushkeys __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_range __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_readfile __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_reltime __ARGS((typval_T *argvars, typval_T *rettv));
@@ -7093,6 +7094,7 @@
     {"prevnonblank",	1, 1, f_prevnonblank},
     {"printf",		2, 19, f_printf},
     {"pumvisible",	0, 0, f_pumvisible},
+    {"pushkeys",        1, 1, f_pushkeys},
     {"range",		1, 3, f_range},
     {"readfile",	1, 3, f_readfile},
     {"reltime",		0, 2, f_reltime},
@@ -12576,6 +12578,19 @@
 }
 
 /*
+ * "pushkeys()" function
+ */
+/*ARGSUSED*/
+    static void
+f_pushkeys(argvars, rettv)
+    typval_T    *argvars;
+    typval_T    *rettv;
+{
+    rettv->vval.v_number = 0;
+    server_to_input_buf(get_tv_string(&argvars[0]));
+}
+
+/*
  * "range()" function
  */
     static void
--- ../runtime/doc/eval.txt.000	2006-04-21 15:05:30.000000000 +0300
+++ ../runtime/doc/eval.txt	2006-04-21 15:16:36.000000000 +0300
@@ -1657,6 +1657,7 @@
 prevnonblank( {lnum})		Number	line nr of non-blank line <= {lnum}
 printf( {fmt}, {expr1}...)	String  format text
 pumvisible()			Number  whether popup menu is visible
+pushkeys({string})		Number  add key sequence to typeahead buffer
 range( {expr} [, {max} [, {stride}]])
 				List	items from {expr} to {max}
 readfile({fname} [, {binary} [, {max}]])
@@ -3778,6 +3779,10 @@
 		This can be used to avoid some things that would remove the
 		popup menu.
 
+pushkeys({string})					*pushkeys()*
+		Add {string} to the typeahead buffer as sequence of keys.
+		The keys are not mapped. Return value is not meaningful.
+
 							*E726* *E727*
 range({expr} [, {max} [, {stride}]])				*range()*
 		Returns a |List| with Numbers:
