diff src/eval.c @ 913:1aba098d6abc v7.0.039

updated for version 7.0-039
author vimboss
date Thu, 13 Jul 2006 06:31:00 +0000
parents adf6a9dcaded
children bc68103ea3f6
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -11321,14 +11321,19 @@ f_index(argvars, rettv)
 
 static int inputsecret_flag = 0;
 
-/*
- * "input()" function
- *     Also handles inputsecret() when inputsecret is set.
- */
-    static void
-f_input(argvars, rettv)
-    typval_T	*argvars;
-    typval_T	*rettv;
+static void get_user_input __ARGS((typval_T *argvars, typval_T *rettv, int inputdialog));
+
+/*
+ * This function is used by f_input() and f_inputdialog() functions. The third
+ * argument to f_input() specifies the type of completion to use at the
+ * prompt. The third argument to f_inputdialog() specifies the value to return
+ * when the user cancels the prompt.
+ */
+    static void
+get_user_input(argvars, rettv, inputdialog)
+    typval_T	*argvars;
+    typval_T	*rettv;
+    int		inputdialog;
 {
     char_u	*prompt = get_tv_string_chk(&argvars[0]);
     char_u	*p = NULL;
@@ -11378,7 +11383,7 @@ f_input(argvars, rettv)
 	    if (defstr != NULL)
 		stuffReadbuffSpec(defstr);
 
-	    if (argvars[2].v_type != VAR_UNKNOWN)
+	    if (!inputdialog && argvars[2].v_type != VAR_UNKNOWN)
 	    {
 		char_u	*xp_name;
 		int	xp_namelen;
@@ -11413,6 +11418,18 @@ f_input(argvars, rettv)
 }
 
 /*
+ * "input()" function
+ *     Also handles inputsecret() when inputsecret is set.
+ */
+    static void
+f_input(argvars, rettv)
+    typval_T	*argvars;
+    typval_T	*rettv;
+{
+    get_user_input(argvars, rettv, FALSE);
+}
+
+/*
  * "inputdialog()" function
  */
     static void
@@ -11452,7 +11469,7 @@ f_inputdialog(argvars, rettv)
     }
     else
 #endif
-	f_input(argvars, rettv);
+	get_user_input(argvars, rettv, TRUE);
 }
 
 /*