Blob Blame History Raw
To: vim-dev@vim.org
Subject: Patch 7.0.039
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.0.039
Problem:    Calling inputdialog() with a third argument in the console doesn't
            work.
Solution:   Make a separate function for input() and inputdialog(). (Yegappan
            Lakshmanan)
Files:      src/eval.c


*** ../vim-7.0.038/src/eval.c	Wed Jul 12 21:48:56 2006
--- src/eval.c	Mon Jul 10 23:03:13 2006
***************
*** 11321,11334 ****
  
  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;
  {
      char_u	*prompt = get_tv_string_chk(&argvars[0]);
      char_u	*p = NULL;
--- 11321,11339 ----
  
  static int inputsecret_flag = 0;
  
+ 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,11384 ****
  	    if (defstr != NULL)
  		stuffReadbuffSpec(defstr);
  
! 	    if (argvars[2].v_type != VAR_UNKNOWN)
  	    {
  		char_u	*xp_name;
  		int	xp_namelen;
--- 11383,11389 ----
  	    if (defstr != NULL)
  		stuffReadbuffSpec(defstr);
  
! 	    if (!inputdialog && argvars[2].v_type != VAR_UNKNOWN)
  	    {
  		char_u	*xp_name;
  		int	xp_namelen;
***************
*** 11413,11418 ****
--- 11418,11435 ----
  }
  
  /*
+  * "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,11458 ****
      }
      else
  #endif
! 	f_input(argvars, rettv);
  }
  
  /*
--- 11469,11475 ----
      }
      else
  #endif
! 	get_user_input(argvars, rettv, TRUE);
  }
  
  /*
*** ../vim-7.0.038/src/version.c	Wed Jul 12 21:48:56 2006
--- src/version.c	Wed Jul 12 21:56:30 2006
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     39,
  /**/

-- 
A consultant is a person who takes your money and annoys your employees while
tirelessly searching for the best way to extend the consulting contract.
				(Scott Adams - The Dilbert principle)

 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///