# HG changeset patch # User vimboss # Date 1152772260 0 # Node ID 1aba098d6abc680214b3b31c954abd53ddc772ef # Parent adf6a9dcadeda32a2a339069336ebed7fe6d53da updated for version 7.0-039 diff --git a/src/eval.c b/src/eval.c --- 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); } /* diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -667,6 +667,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 39, +/**/ 38, /**/ 37,