components/vim/vim72-patches/7.2.051
changeset 379 c6a17bba1da3
parent 378 f0b61ed1d10d
child 380 e92b3b4a1c66
equal deleted inserted replaced
378:f0b61ed1d10d 379:c6a17bba1da3
     1 To: [email protected]
       
     2 Subject: Patch 7.2.051
       
     3 Fcc: outbox
       
     4 From: Bram Moolenaar <[email protected]>
       
     5 Mime-Version: 1.0
       
     6 Content-Type: text/plain; charset=ISO-8859-1
       
     7 Content-Transfer-Encoding: 8bit
       
     8 ------------
       
     9 
       
    10 Patch 7.2.051
       
    11 Problem:    Can't avoid 'wildignore' and 'suffixes' for glob() and globpath().
       
    12 Solution:   Add an extra argument to these functions. (Ingo Karkat)
       
    13 Files:	    src/eval.c, src/ex_getln.c, src/proto/ex_getln.pro,
       
    14 	    runtime/doc/eval.txt, runtime/doc/options.txt
       
    15 
       
    16 
       
    17 *** ../vim-7.2.050/src/eval.c	Thu Nov 20 16:11:03 2008
       
    18 --- src/eval.c	Thu Nov 27 22:15:40 2008
       
    19 ***************
       
    20 *** 7564,7571 ****
       
    21       {"getwinposx",	0, 0, f_getwinposx},
       
    22       {"getwinposy",	0, 0, f_getwinposy},
       
    23       {"getwinvar",	2, 2, f_getwinvar},
       
    24 !     {"glob",		1, 1, f_glob},
       
    25 !     {"globpath",	2, 2, f_globpath},
       
    26       {"has",		1, 1, f_has},
       
    27       {"has_key",		2, 2, f_has_key},
       
    28       {"haslocaldir",	0, 0, f_haslocaldir},
       
    29 --- 7564,7571 ----
       
    30       {"getwinposx",	0, 0, f_getwinposx},
       
    31       {"getwinposy",	0, 0, f_getwinposy},
       
    32       {"getwinvar",	2, 2, f_getwinvar},
       
    33 !     {"glob",		1, 2, f_glob},
       
    34 !     {"globpath",	2, 3, f_globpath},
       
    35       {"has",		1, 1, f_has},
       
    36       {"has_key",		2, 2, f_has_key},
       
    37       {"haslocaldir",	0, 0, f_haslocaldir},
       
    38 ***************
       
    39 *** 9557,9563 ****
       
    40       else
       
    41       {
       
    42   	/* When the optional second argument is non-zero, don't remove matches
       
    43 ! 	 * for 'suffixes' and 'wildignore' */
       
    44   	if (argvars[1].v_type != VAR_UNKNOWN
       
    45   				    && get_tv_number_chk(&argvars[1], &error))
       
    46   	    flags |= WILD_KEEP_ALL;
       
    47 --- 9557,9563 ----
       
    48       else
       
    49       {
       
    50   	/* When the optional second argument is non-zero, don't remove matches
       
    51 ! 	 * for 'wildignore' and don't put matches for 'suffixes' at the end. */
       
    52   	if (argvars[1].v_type != VAR_UNKNOWN
       
    53   				    && get_tv_number_chk(&argvars[1], &error))
       
    54   	    flags |= WILD_KEEP_ALL;
       
    55 ***************
       
    56 *** 11323,11335 ****
       
    57       typval_T	*argvars;
       
    58       typval_T	*rettv;
       
    59   {
       
    60       expand_T	xpc;
       
    61   
       
    62 !     ExpandInit(&xpc);
       
    63 !     xpc.xp_context = EXPAND_FILES;
       
    64 !     rettv->v_type = VAR_STRING;
       
    65 !     rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
       
    66 ! 				     NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL);
       
    67   }
       
    68   
       
    69   /*
       
    70 --- 11323,11347 ----
       
    71       typval_T	*argvars;
       
    72       typval_T	*rettv;
       
    73   {
       
    74 +     int		flags = WILD_SILENT|WILD_USE_NL;
       
    75       expand_T	xpc;
       
    76 +     int		error = FALSE;
       
    77   
       
    78 !     /* When the optional second argument is non-zero, don't remove matches
       
    79 !     * for 'wildignore' and don't put matches for 'suffixes' at the end. */
       
    80 !     if (argvars[1].v_type != VAR_UNKNOWN
       
    81 ! 				&& get_tv_number_chk(&argvars[1], &error))
       
    82 ! 	flags |= WILD_KEEP_ALL;
       
    83 !     rettv->v_type = VAR_STRING;
       
    84 !     if (!error)
       
    85 !     {
       
    86 ! 	ExpandInit(&xpc);
       
    87 ! 	xpc.xp_context = EXPAND_FILES;
       
    88 ! 	rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
       
    89 ! 						       NULL, flags, WILD_ALL);
       
    90 !     }
       
    91 !     else
       
    92 ! 	rettv->vval.v_string = NULL;
       
    93   }
       
    94   
       
    95   /*
       
    96 ***************
       
    97 *** 11340,11353 ****
       
    98       typval_T	*argvars;
       
    99       typval_T	*rettv;
       
   100   {
       
   101       char_u	buf1[NUMBUFLEN];
       
   102       char_u	*file = get_tv_string_buf_chk(&argvars[1], buf1);
       
   103   
       
   104       rettv->v_type = VAR_STRING;
       
   105 !     if (file == NULL)
       
   106   	rettv->vval.v_string = NULL;
       
   107       else
       
   108 ! 	rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file);
       
   109   }
       
   110   
       
   111   /*
       
   112 --- 11352,11373 ----
       
   113       typval_T	*argvars;
       
   114       typval_T	*rettv;
       
   115   {
       
   116 +     int		flags = 0;
       
   117       char_u	buf1[NUMBUFLEN];
       
   118       char_u	*file = get_tv_string_buf_chk(&argvars[1], buf1);
       
   119 +     int		error = FALSE;
       
   120   
       
   121 +     /* When the optional second argument is non-zero, don't remove matches
       
   122 +     * for 'wildignore' and don't put matches for 'suffixes' at the end. */
       
   123 +     if (argvars[2].v_type != VAR_UNKNOWN
       
   124 + 				&& get_tv_number_chk(&argvars[2], &error))
       
   125 + 	flags |= WILD_KEEP_ALL;
       
   126       rettv->v_type = VAR_STRING;
       
   127 !     if (file == NULL || error)
       
   128   	rettv->vval.v_string = NULL;
       
   129       else
       
   130 ! 	rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file,
       
   131 ! 								       flags);
       
   132   }
       
   133   
       
   134   /*
       
   135 *** ../vim-7.2.050/src/ex_getln.c	Sat Nov 15 14:10:23 2008
       
   136 --- src/ex_getln.c	Thu Nov 20 18:37:20 2008
       
   137 ***************
       
   138 *** 2524,2530 ****
       
   139   	    && ccline.xpc->xp_context != EXPAND_NOTHING
       
   140   	    && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
       
   141       {
       
   142 ! 	int i = ccline.xpc->xp_pattern - p;
       
   143   
       
   144   	/* If xp_pattern points inside the old cmdbuff it needs to be adjusted
       
   145   	 * to point into the newly allocated memory. */
       
   146 --- 2524,2530 ----
       
   147   	    && ccline.xpc->xp_context != EXPAND_NOTHING
       
   148   	    && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
       
   149       {
       
   150 ! 	int i = (int)(ccline.xpc->xp_pattern - p);
       
   151   
       
   152   	/* If xp_pattern points inside the old cmdbuff it needs to be adjusted
       
   153   	 * to point into the newly allocated memory. */
       
   154 ***************
       
   155 *** 4897,4903 ****
       
   156       if (s == NULL)
       
   157   	return FAIL;
       
   158       sprintf((char *)s, "%s/%s*.vim", dirname, pat);
       
   159 !     all = globpath(p_rtp, s);
       
   160       vim_free(s);
       
   161       if (all == NULL)
       
   162   	return FAIL;
       
   163 --- 4897,4903 ----
       
   164       if (s == NULL)
       
   165   	return FAIL;
       
   166       sprintf((char *)s, "%s/%s*.vim", dirname, pat);
       
   167 !     all = globpath(p_rtp, s, 0);
       
   168       vim_free(s);
       
   169       if (all == NULL)
       
   170   	return FAIL;
       
   171 ***************
       
   172 *** 4938,4946 ****
       
   173    * newlines.  Returns NULL for an error or no matches.
       
   174    */
       
   175       char_u *
       
   176 ! globpath(path, file)
       
   177       char_u	*path;
       
   178       char_u	*file;
       
   179   {
       
   180       expand_T	xpc;
       
   181       char_u	*buf;
       
   182 --- 4938,4947 ----
       
   183    * newlines.  Returns NULL for an error or no matches.
       
   184    */
       
   185       char_u *
       
   186 ! globpath(path, file, expand_options)
       
   187       char_u	*path;
       
   188       char_u	*file;
       
   189 +     int		expand_options;
       
   190   {
       
   191       expand_T	xpc;
       
   192       char_u	*buf;
       
   193 ***************
       
   194 *** 4969,4978 ****
       
   195   	{
       
   196   	    add_pathsep(buf);
       
   197   	    STRCAT(buf, file);
       
   198 ! 	    if (ExpandFromContext(&xpc, buf, &num_p, &p, WILD_SILENT) != FAIL
       
   199 ! 								 && num_p > 0)
       
   200   	    {
       
   201 ! 		ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT);
       
   202   		for (len = 0, i = 0; i < num_p; ++i)
       
   203   		    len += (int)STRLEN(p[i]) + 1;
       
   204   
       
   205 --- 4970,4979 ----
       
   206   	{
       
   207   	    add_pathsep(buf);
       
   208   	    STRCAT(buf, file);
       
   209 ! 	    if (ExpandFromContext(&xpc, buf, &num_p, &p,
       
   210 ! 			     WILD_SILENT|expand_options) != FAIL && num_p > 0)
       
   211   	    {
       
   212 ! 		ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options);
       
   213   		for (len = 0, i = 0; i < num_p; ++i)
       
   214   		    len += (int)STRLEN(p[i]) + 1;
       
   215   
       
   216 *** ../vim-7.2.050/src/proto/ex_getln.pro	Wed May 28 16:49:01 2008
       
   217 --- src/proto/ex_getln.pro	Thu Nov 20 18:27:57 2008
       
   218 ***************
       
   219 *** 31,37 ****
       
   220   void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
       
   221   int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
       
   222   int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
       
   223 ! char_u *globpath __ARGS((char_u *path, char_u *file));
       
   224   void init_history __ARGS((void));
       
   225   int get_histtype __ARGS((char_u *name));
       
   226   void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
       
   227 --- 31,37 ----
       
   228   void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
       
   229   int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
       
   230   int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
       
   231 ! char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
       
   232   void init_history __ARGS((void));
       
   233   int get_histtype __ARGS((char_u *name));
       
   234   void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
       
   235 *** ../vim-7.2.050/runtime/doc/eval.txt	Sun Nov  9 13:43:25 2008
       
   236 --- runtime/doc/eval.txt	Thu Nov 27 22:17:13 2008
       
   237 ***************
       
   238 *** 1,4 ****
       
   239 ! *eval.txt*	For Vim version 7.2.  Last change: 2008 Nov 02
       
   240   
       
   241   
       
   242   		  VIM REFERENCE MANUAL	  by Bram Moolenaar
       
   243 --- 1,4 ----
       
   244 ! *eval.txt*	For Vim version 7.2.  Last change: 2008 Nov 27
       
   245   
       
   246   
       
   247   		  VIM REFERENCE MANUAL	  by Bram Moolenaar
       
   248 ***************
       
   249 *** 1706,1712 ****
       
   250   exists( {expr})			Number	TRUE if {expr} exists
       
   251   extend({expr1}, {expr2} [, {expr3}])
       
   252   				List/Dict insert items of {expr2} into {expr1}
       
   253 ! expand( {expr})			String	expand special keywords in {expr}
       
   254   feedkeys( {string} [, {mode}])	Number	add key sequence to typeahead buffer
       
   255   filereadable( {file})		Number	TRUE if {file} is a readable file
       
   256   filewritable( {file})		Number	TRUE if {file} is a writable file
       
   257 --- 1709,1715 ----
       
   258   exists( {expr})			Number	TRUE if {expr} exists
       
   259   extend({expr1}, {expr2} [, {expr3}])
       
   260   				List/Dict insert items of {expr2} into {expr1}
       
   261 ! expand( {expr} [, {flag}])	String	expand special keywords in {expr}
       
   262   feedkeys( {string} [, {mode}])	Number	add key sequence to typeahead buffer
       
   263   filereadable( {file})		Number	TRUE if {file} is a readable file
       
   264   filewritable( {file})		Number	TRUE if {file} is a writable file
       
   265 ***************
       
   266 *** 1758,1765 ****
       
   267   getwinposx()			Number	X coord in pixels of GUI Vim window
       
   268   getwinposy()			Number	Y coord in pixels of GUI Vim window
       
   269   getwinvar( {nr}, {varname})	any	variable {varname} in window {nr}
       
   270 ! glob( {expr})			String	expand file wildcards in {expr}
       
   271 ! globpath( {path}, {expr})	String	do glob({expr}) for all dirs in {path}
       
   272   has( {feature})			Number	TRUE if feature {feature} supported
       
   273   has_key( {dict}, {key})		Number	TRUE if {dict} has entry {key}
       
   274   haslocaldir()			Number	TRUE if current window executed |:lcd|
       
   275 --- 1761,1769 ----
       
   276   getwinposx()			Number	X coord in pixels of GUI Vim window
       
   277   getwinposy()			Number	Y coord in pixels of GUI Vim window
       
   278   getwinvar( {nr}, {varname})	any	variable {varname} in window {nr}
       
   279 ! glob( {expr} [, {flag}])	String	expand file wildcards in {expr}
       
   280 ! globpath( {path}, {expr} [, {flag}])
       
   281 ! 				String	do glob({expr}) for all dirs in {path}
       
   282   has( {feature})			Number	TRUE if feature {feature} supported
       
   283   has_key( {dict}, {key})		Number	TRUE if {dict} has entry {key}
       
   284   haslocaldir()			Number	TRUE if current window executed |:lcd|
       
   285 ***************
       
   286 *** 3286,3299 ****
       
   287   			:let list_is_on = getwinvar(2, '&list')
       
   288   			:echo "myvar = " . getwinvar(1, 'myvar')
       
   289   <
       
   290 ! 							*glob()*
       
   291 ! glob({expr})	Expand the file wildcards in {expr}.  See |wildcards| for the
       
   292   		use of special characters.
       
   293   		The result is a String.
       
   294   		When there are several matches, they are separated by <NL>
       
   295   		characters.
       
   296 ! 		The 'wildignore' option applies: Names matching one of the
       
   297 ! 		patterns in 'wildignore' will be skipped.
       
   298   		If the expansion fails, the result is an empty string.
       
   299   		A name for a non-existing file is not included.
       
   300   
       
   301 --- 3290,3305 ----
       
   302   			:let list_is_on = getwinvar(2, '&list')
       
   303   			:echo "myvar = " . getwinvar(1, 'myvar')
       
   304   <
       
   305 ! glob({expr} [, {flag}])					*glob()*
       
   306 ! 		Expand the file wildcards in {expr}.  See |wildcards| for the
       
   307   		use of special characters.
       
   308   		The result is a String.
       
   309   		When there are several matches, they are separated by <NL>
       
   310   		characters.
       
   311 ! 		Unless the optional {flag} argument is given and is non-zero,
       
   312 ! 		the 'suffixes' and 'wildignore' options apply: Names matching
       
   313 ! 		one of the patterns in 'wildignore' will be skipped and
       
   314 ! 		'suffixes' affect the ordering of matches.
       
   315   		If the expansion fails, the result is an empty string.
       
   316   		A name for a non-existing file is not included.
       
   317   
       
   318 ***************
       
   319 *** 3307,3326 ****
       
   320   		See |expand()| for expanding special Vim variables.  See
       
   321   		|system()| for getting the raw output of an external command.
       
   322   
       
   323 ! globpath({path}, {expr})				*globpath()*
       
   324   		Perform glob() on all directories in {path} and concatenate
       
   325   		the results.  Example: >
       
   326   			:echo globpath(&rtp, "syntax/c.vim")
       
   327   <		{path} is a comma-separated list of directory names.  Each
       
   328   		directory name is prepended to {expr} and expanded like with
       
   329 ! 		glob().  A path separator is inserted when needed.
       
   330   		To add a comma inside a directory name escape it with a
       
   331   		backslash.  Note that on MS-Windows a directory may have a
       
   332   		trailing backslash, remove it if you put a comma after it.
       
   333   		If the expansion fails for one of the directories, there is no
       
   334   		error message.
       
   335 ! 		The 'wildignore' option applies: Names matching one of the
       
   336 ! 		patterns in 'wildignore' will be skipped.
       
   337   
       
   338   		The "**" item can be used to search in a directory tree.
       
   339   		For example, to find all "README.txt" files in the directories
       
   340 --- 3313,3334 ----
       
   341   		See |expand()| for expanding special Vim variables.  See
       
   342   		|system()| for getting the raw output of an external command.
       
   343   
       
   344 ! globpath({path}, {expr} [, {flag}])			*globpath()*
       
   345   		Perform glob() on all directories in {path} and concatenate
       
   346   		the results.  Example: >
       
   347   			:echo globpath(&rtp, "syntax/c.vim")
       
   348   <		{path} is a comma-separated list of directory names.  Each
       
   349   		directory name is prepended to {expr} and expanded like with
       
   350 ! 		|glob()|.  A path separator is inserted when needed.
       
   351   		To add a comma inside a directory name escape it with a
       
   352   		backslash.  Note that on MS-Windows a directory may have a
       
   353   		trailing backslash, remove it if you put a comma after it.
       
   354   		If the expansion fails for one of the directories, there is no
       
   355   		error message.
       
   356 ! 		Unless the optional {flag} argument is given and is non-zero,
       
   357 ! 		the 'suffixes' and 'wildignore' options apply: Names matching
       
   358 ! 		one of the patterns in 'wildignore' will be skipped and
       
   359 ! 		'suffixes' affect the ordering of matches.
       
   360   
       
   361   		The "**" item can be used to search in a directory tree.
       
   362   		For example, to find all "README.txt" files in the directories
       
   363 *** ../vim-7.2.050/runtime/doc/options.txt	Sat Aug  9 19:36:49 2008
       
   364 --- runtime/doc/options.txt	Tue Nov 25 23:43:55 2008
       
   365 ***************
       
   366 *** 1,4 ****
       
   367 ! *options.txt*	For Vim version 7.2.  Last change: 2008 Aug 06
       
   368   
       
   369   
       
   370   		  VIM REFERENCE MANUAL	  by Bram Moolenaar
       
   371 --- 1,4 ----
       
   372 ! *options.txt*	For Vim version 7.2.  Last change: 2008 Nov 25
       
   373   
       
   374   
       
   375   		  VIM REFERENCE MANUAL	  by Bram Moolenaar
       
   376 ***************
       
   377 *** 7472,7478 ****
       
   378   			{not available when compiled without the |+wildignore|
       
   379   			feature}
       
   380   	A list of file patterns.  A file that matches with one of these
       
   381 ! 	patterns is ignored when completing file or directory names.
       
   382   	The pattern is used like with |:autocmd|, see |autocmd-patterns|.
       
   383   	Also see 'suffixes'.
       
   384   	Example: >
       
   385 --- 7481,7489 ----
       
   386   			{not available when compiled without the |+wildignore|
       
   387   			feature}
       
   388   	A list of file patterns.  A file that matches with one of these
       
   389 ! 	patterns is ignored when completing file or directory names, and
       
   390 ! 	influences the result of |expand()|, |glob()| and |globpath()| unless
       
   391 ! 	a flag is passed to disable this.
       
   392   	The pattern is used like with |:autocmd|, see |autocmd-patterns|.
       
   393   	Also see 'suffixes'.
       
   394   	Example: >
       
   395 *** ../vim-7.2.050/src/version.c	Fri Nov 28 10:08:05 2008
       
   396 --- src/version.c	Fri Nov 28 10:55:44 2008
       
   397 ***************
       
   398 *** 678,679 ****
       
   399 --- 678,681 ----
       
   400   {   /* Add new patch number below this line */
       
   401 + /**/
       
   402 +     51,
       
   403   /**/
       
   404 
       
   405 -- 
       
   406 Not too long ago, unzipping in public was illegal...
       
   407 
       
   408  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
       
   409 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
       
   410 \\\        download, build and distribute -- http://www.A-A-P.org        ///
       
   411  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///