Mercurial > vim
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); } /*