updated for version 7.3.1309
Problem:    When a script defines a function the flag to wait for the user to
            hit enter is reset.
Solution:   Restore the flag. (Yasuhiro Matsumoto)  Except when the user was
            typing the function.
diff --git a/src/eval.c b/src/eval.c
index 2a2817e..b9d739d 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -21108,6 +21108,7 @@
     int		j;
     int		c;
     int		saved_did_emsg;
+    int		saved_wait_return = need_wait_return;
     char_u	*name = NULL;
     char_u	*p;
     char_u	*arg;
@@ -21439,7 +21440,10 @@
     for (;;)
     {
 	if (KeyTyped)
+	{
 	    msg_scroll = TRUE;
+	    saved_wait_return = FALSE;
+	}
 	need_wait_return = FALSE;
 	sourcing_lnum_off = sourcing_lnum;
 
@@ -21750,6 +21754,7 @@
     vim_free(fudi.fd_newkey);
     vim_free(name);
     did_emsg |= saved_did_emsg;
+    need_wait_return |= saved_wait_return;
 }
 
 /*