Karsten Hopp 658407
To: vim-dev@vim.org
Karsten Hopp 658407
Subject: Patch 7.2.051
Karsten Hopp 658407
Fcc: outbox
Karsten Hopp 658407
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 658407
Mime-Version: 1.0
Karsten Hopp 658407
Content-Type: text/plain; charset=ISO-8859-1
Karsten Hopp 658407
Content-Transfer-Encoding: 8bit
Karsten Hopp 658407
------------
Karsten Hopp 658407
Karsten Hopp 658407
Patch 7.2.051
Karsten Hopp 658407
Problem:    Can't avoid 'wildignore' and 'suffixes' for glob() and globpath().
Karsten Hopp 658407
Solution:   Add an extra argument to these functions. (Ingo Karkat)
Karsten Hopp 658407
Files:	    src/eval.c, src/ex_getln.c, src/proto/ex_getln.pro,
Karsten Hopp 658407
	    runtime/doc/eval.txt, runtime/doc/options.txt
Karsten Hopp 658407
Karsten Hopp 658407
Karsten Hopp 658407
*** ../vim-7.2.050/src/eval.c	Thu Nov 20 16:11:03 2008
Karsten Hopp 658407
--- src/eval.c	Thu Nov 27 22:15:40 2008
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 7564,7571 ****
Karsten Hopp 658407
      {"getwinposx",	0, 0, f_getwinposx},
Karsten Hopp 658407
      {"getwinposy",	0, 0, f_getwinposy},
Karsten Hopp 658407
      {"getwinvar",	2, 2, f_getwinvar},
Karsten Hopp 658407
!     {"glob",		1, 1, f_glob},
Karsten Hopp 658407
!     {"globpath",	2, 2, f_globpath},
Karsten Hopp 658407
      {"has",		1, 1, f_has},
Karsten Hopp 658407
      {"has_key",		2, 2, f_has_key},
Karsten Hopp 658407
      {"haslocaldir",	0, 0, f_haslocaldir},
Karsten Hopp 658407
--- 7564,7571 ----
Karsten Hopp 658407
      {"getwinposx",	0, 0, f_getwinposx},
Karsten Hopp 658407
      {"getwinposy",	0, 0, f_getwinposy},
Karsten Hopp 658407
      {"getwinvar",	2, 2, f_getwinvar},
Karsten Hopp 658407
!     {"glob",		1, 2, f_glob},
Karsten Hopp 658407
!     {"globpath",	2, 3, f_globpath},
Karsten Hopp 658407
      {"has",		1, 1, f_has},
Karsten Hopp 658407
      {"has_key",		2, 2, f_has_key},
Karsten Hopp 658407
      {"haslocaldir",	0, 0, f_haslocaldir},
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 9557,9563 ****
Karsten Hopp 658407
      else
Karsten Hopp 658407
      {
Karsten Hopp 658407
  	/* When the optional second argument is non-zero, don't remove matches
Karsten Hopp 658407
! 	 * for 'suffixes' and 'wildignore' */
Karsten Hopp 658407
  	if (argvars[1].v_type != VAR_UNKNOWN
Karsten Hopp 658407
  				    && get_tv_number_chk(&argvars[1], &error))
Karsten Hopp 658407
  	    flags |= WILD_KEEP_ALL;
Karsten Hopp 658407
--- 9557,9563 ----
Karsten Hopp 658407
      else
Karsten Hopp 658407
      {
Karsten Hopp 658407
  	/* When the optional second argument is non-zero, don't remove matches
Karsten Hopp 658407
! 	 * for 'wildignore' and don't put matches for 'suffixes' at the end. */
Karsten Hopp 658407
  	if (argvars[1].v_type != VAR_UNKNOWN
Karsten Hopp 658407
  				    && get_tv_number_chk(&argvars[1], &error))
Karsten Hopp 658407
  	    flags |= WILD_KEEP_ALL;
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 11323,11335 ****
Karsten Hopp 658407
      typval_T	*argvars;
Karsten Hopp 658407
      typval_T	*rettv;
Karsten Hopp 658407
  {
Karsten Hopp 658407
      expand_T	xpc;
Karsten Hopp 658407
  
Karsten Hopp 658407
!     ExpandInit(&xpc);
Karsten Hopp 658407
!     xpc.xp_context = EXPAND_FILES;
Karsten Hopp 658407
!     rettv->v_type = VAR_STRING;
Karsten Hopp 658407
!     rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
Karsten Hopp 658407
! 				     NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL);
Karsten Hopp 658407
  }
Karsten Hopp 658407
  
Karsten Hopp 658407
  /*
Karsten Hopp 658407
--- 11323,11347 ----
Karsten Hopp 658407
      typval_T	*argvars;
Karsten Hopp 658407
      typval_T	*rettv;
Karsten Hopp 658407
  {
Karsten Hopp 658407
+     int		flags = WILD_SILENT|WILD_USE_NL;
Karsten Hopp 658407
      expand_T	xpc;
Karsten Hopp 658407
+     int		error = FALSE;
Karsten Hopp 658407
  
Karsten Hopp 658407
!     /* When the optional second argument is non-zero, don't remove matches
Karsten Hopp 658407
!     * for 'wildignore' and don't put matches for 'suffixes' at the end. */
Karsten Hopp 658407
!     if (argvars[1].v_type != VAR_UNKNOWN
Karsten Hopp 658407
! 				&& get_tv_number_chk(&argvars[1], &error))
Karsten Hopp 658407
! 	flags |= WILD_KEEP_ALL;
Karsten Hopp 658407
!     rettv->v_type = VAR_STRING;
Karsten Hopp 658407
!     if (!error)
Karsten Hopp 658407
!     {
Karsten Hopp 658407
! 	ExpandInit(&xpc);
Karsten Hopp 658407
! 	xpc.xp_context = EXPAND_FILES;
Karsten Hopp 658407
! 	rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
Karsten Hopp 658407
! 						       NULL, flags, WILD_ALL);
Karsten Hopp 658407
!     }
Karsten Hopp 658407
!     else
Karsten Hopp 658407
! 	rettv->vval.v_string = NULL;
Karsten Hopp 658407
  }
Karsten Hopp 658407
  
Karsten Hopp 658407
  /*
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 11340,11353 ****
Karsten Hopp 658407
      typval_T	*argvars;
Karsten Hopp 658407
      typval_T	*rettv;
Karsten Hopp 658407
  {
Karsten Hopp 658407
      char_u	buf1[NUMBUFLEN];
Karsten Hopp 658407
      char_u	*file = get_tv_string_buf_chk(&argvars[1], buf1);
Karsten Hopp 658407
  
Karsten Hopp 658407
      rettv->v_type = VAR_STRING;
Karsten Hopp 658407
!     if (file == NULL)
Karsten Hopp 658407
  	rettv->vval.v_string = NULL;
Karsten Hopp 658407
      else
Karsten Hopp 658407
! 	rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file);
Karsten Hopp 658407
  }
Karsten Hopp 658407
  
Karsten Hopp 658407
  /*
Karsten Hopp 658407
--- 11352,11373 ----
Karsten Hopp 658407
      typval_T	*argvars;
Karsten Hopp 658407
      typval_T	*rettv;
Karsten Hopp 658407
  {
Karsten Hopp 658407
+     int		flags = 0;
Karsten Hopp 658407
      char_u	buf1[NUMBUFLEN];
Karsten Hopp 658407
      char_u	*file = get_tv_string_buf_chk(&argvars[1], buf1);
Karsten Hopp 658407
+     int		error = FALSE;
Karsten Hopp 658407
  
Karsten Hopp 658407
+     /* When the optional second argument is non-zero, don't remove matches
Karsten Hopp 658407
+     * for 'wildignore' and don't put matches for 'suffixes' at the end. */
Karsten Hopp 658407
+     if (argvars[2].v_type != VAR_UNKNOWN
Karsten Hopp 658407
+ 				&& get_tv_number_chk(&argvars[2], &error))
Karsten Hopp 658407
+ 	flags |= WILD_KEEP_ALL;
Karsten Hopp 658407
      rettv->v_type = VAR_STRING;
Karsten Hopp 658407
!     if (file == NULL || error)
Karsten Hopp 658407
  	rettv->vval.v_string = NULL;
Karsten Hopp 658407
      else
Karsten Hopp 658407
! 	rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file,
Karsten Hopp 658407
! 								       flags);
Karsten Hopp 658407
  }
Karsten Hopp 658407
  
Karsten Hopp 658407
  /*
Karsten Hopp 658407
*** ../vim-7.2.050/src/ex_getln.c	Sat Nov 15 14:10:23 2008
Karsten Hopp 658407
--- src/ex_getln.c	Thu Nov 20 18:37:20 2008
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 2524,2530 ****
Karsten Hopp 658407
  	    && ccline.xpc->xp_context != EXPAND_NOTHING
Karsten Hopp 658407
  	    && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
Karsten Hopp 658407
      {
Karsten Hopp 658407
! 	int i = ccline.xpc->xp_pattern - p;
Karsten Hopp 658407
  
Karsten Hopp 658407
  	/* If xp_pattern points inside the old cmdbuff it needs to be adjusted
Karsten Hopp 658407
  	 * to point into the newly allocated memory. */
Karsten Hopp 658407
--- 2524,2530 ----
Karsten Hopp 658407
  	    && ccline.xpc->xp_context != EXPAND_NOTHING
Karsten Hopp 658407
  	    && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
Karsten Hopp 658407
      {
Karsten Hopp 658407
! 	int i = (int)(ccline.xpc->xp_pattern - p);
Karsten Hopp 658407
  
Karsten Hopp 658407
  	/* If xp_pattern points inside the old cmdbuff it needs to be adjusted
Karsten Hopp 658407
  	 * to point into the newly allocated memory. */
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 4897,4903 ****
Karsten Hopp 658407
      if (s == NULL)
Karsten Hopp 658407
  	return FAIL;
Karsten Hopp 658407
      sprintf((char *)s, "%s/%s*.vim", dirname, pat);
Karsten Hopp 658407
!     all = globpath(p_rtp, s);
Karsten Hopp 658407
      vim_free(s);
Karsten Hopp 658407
      if (all == NULL)
Karsten Hopp 658407
  	return FAIL;
Karsten Hopp 658407
--- 4897,4903 ----
Karsten Hopp 658407
      if (s == NULL)
Karsten Hopp 658407
  	return FAIL;
Karsten Hopp 658407
      sprintf((char *)s, "%s/%s*.vim", dirname, pat);
Karsten Hopp 658407
!     all = globpath(p_rtp, s, 0);
Karsten Hopp 658407
      vim_free(s);
Karsten Hopp 658407
      if (all == NULL)
Karsten Hopp 658407
  	return FAIL;
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 4938,4946 ****
Karsten Hopp 658407
   * newlines.  Returns NULL for an error or no matches.
Karsten Hopp 658407
   */
Karsten Hopp 658407
      char_u *
Karsten Hopp 658407
! globpath(path, file)
Karsten Hopp 658407
      char_u	*path;
Karsten Hopp 658407
      char_u	*file;
Karsten Hopp 658407
  {
Karsten Hopp 658407
      expand_T	xpc;
Karsten Hopp 658407
      char_u	*buf;
Karsten Hopp 658407
--- 4938,4947 ----
Karsten Hopp 658407
   * newlines.  Returns NULL for an error or no matches.
Karsten Hopp 658407
   */
Karsten Hopp 658407
      char_u *
Karsten Hopp 658407
! globpath(path, file, expand_options)
Karsten Hopp 658407
      char_u	*path;
Karsten Hopp 658407
      char_u	*file;
Karsten Hopp 658407
+     int		expand_options;
Karsten Hopp 658407
  {
Karsten Hopp 658407
      expand_T	xpc;
Karsten Hopp 658407
      char_u	*buf;
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 4969,4978 ****
Karsten Hopp 658407
  	{
Karsten Hopp 658407
  	    add_pathsep(buf);
Karsten Hopp 658407
  	    STRCAT(buf, file);
Karsten Hopp 658407
! 	    if (ExpandFromContext(&xpc, buf, &num_p, &p, WILD_SILENT) != FAIL
Karsten Hopp 658407
! 								 && num_p > 0)
Karsten Hopp 658407
  	    {
Karsten Hopp 658407
! 		ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT);
Karsten Hopp 658407
  		for (len = 0, i = 0; i < num_p; ++i)
Karsten Hopp 658407
  		    len += (int)STRLEN(p[i]) + 1;
Karsten Hopp 658407
  
Karsten Hopp 658407
--- 4970,4979 ----
Karsten Hopp 658407
  	{
Karsten Hopp 658407
  	    add_pathsep(buf);
Karsten Hopp 658407
  	    STRCAT(buf, file);
Karsten Hopp 658407
! 	    if (ExpandFromContext(&xpc, buf, &num_p, &p,
Karsten Hopp 658407
! 			     WILD_SILENT|expand_options) != FAIL && num_p > 0)
Karsten Hopp 658407
  	    {
Karsten Hopp 658407
! 		ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options);
Karsten Hopp 658407
  		for (len = 0, i = 0; i < num_p; ++i)
Karsten Hopp 658407
  		    len += (int)STRLEN(p[i]) + 1;
Karsten Hopp 658407
  
Karsten Hopp 658407
*** ../vim-7.2.050/src/proto/ex_getln.pro	Wed May 28 16:49:01 2008
Karsten Hopp 658407
--- src/proto/ex_getln.pro	Thu Nov 20 18:27:57 2008
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 31,37 ****
Karsten Hopp 658407
  void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
Karsten Hopp 658407
  int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
Karsten Hopp 658407
  int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
Karsten Hopp 658407
! char_u *globpath __ARGS((char_u *path, char_u *file));
Karsten Hopp 658407
  void init_history __ARGS((void));
Karsten Hopp 658407
  int get_histtype __ARGS((char_u *name));
Karsten Hopp 658407
  void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
Karsten Hopp 658407
--- 31,37 ----
Karsten Hopp 658407
  void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
Karsten Hopp 658407
  int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
Karsten Hopp 658407
  int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
Karsten Hopp 658407
! char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
Karsten Hopp 658407
  void init_history __ARGS((void));
Karsten Hopp 658407
  int get_histtype __ARGS((char_u *name));
Karsten Hopp 658407
  void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
Karsten Hopp 658407
*** ../vim-7.2.050/runtime/doc/eval.txt	Sun Nov  9 13:43:25 2008
Karsten Hopp 658407
--- runtime/doc/eval.txt	Thu Nov 27 22:17:13 2008
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 1,4 ****
Karsten Hopp 658407
! *eval.txt*	For Vim version 7.2.  Last change: 2008 Nov 02
Karsten Hopp 658407
  
Karsten Hopp 658407
  
Karsten Hopp 658407
  		  VIM REFERENCE MANUAL	  by Bram Moolenaar
Karsten Hopp 658407
--- 1,4 ----
Karsten Hopp 658407
! *eval.txt*	For Vim version 7.2.  Last change: 2008 Nov 27
Karsten Hopp 658407
  
Karsten Hopp 658407
  
Karsten Hopp 658407
  		  VIM REFERENCE MANUAL	  by Bram Moolenaar
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 1706,1712 ****
Karsten Hopp 658407
  exists( {expr})			Number	TRUE if {expr} exists
Karsten Hopp 658407
  extend({expr1}, {expr2} [, {expr3}])
Karsten Hopp 658407
  				List/Dict insert items of {expr2} into {expr1}
Karsten Hopp 658407
! expand( {expr})			String	expand special keywords in {expr}
Karsten Hopp 658407
  feedkeys( {string} [, {mode}])	Number	add key sequence to typeahead buffer
Karsten Hopp 658407
  filereadable( {file})		Number	TRUE if {file} is a readable file
Karsten Hopp 658407
  filewritable( {file})		Number	TRUE if {file} is a writable file
Karsten Hopp 658407
--- 1709,1715 ----
Karsten Hopp 658407
  exists( {expr})			Number	TRUE if {expr} exists
Karsten Hopp 658407
  extend({expr1}, {expr2} [, {expr3}])
Karsten Hopp 658407
  				List/Dict insert items of {expr2} into {expr1}
Karsten Hopp 658407
! expand( {expr} [, {flag}])	String	expand special keywords in {expr}
Karsten Hopp 658407
  feedkeys( {string} [, {mode}])	Number	add key sequence to typeahead buffer
Karsten Hopp 658407
  filereadable( {file})		Number	TRUE if {file} is a readable file
Karsten Hopp 658407
  filewritable( {file})		Number	TRUE if {file} is a writable file
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 1758,1765 ****
Karsten Hopp 658407
  getwinposx()			Number	X coord in pixels of GUI Vim window
Karsten Hopp 658407
  getwinposy()			Number	Y coord in pixels of GUI Vim window
Karsten Hopp 658407
  getwinvar( {nr}, {varname})	any	variable {varname} in window {nr}
Karsten Hopp 658407
! glob( {expr})			String	expand file wildcards in {expr}
Karsten Hopp 658407
! globpath( {path}, {expr})	String	do glob({expr}) for all dirs in {path}
Karsten Hopp 658407
  has( {feature})			Number	TRUE if feature {feature} supported
Karsten Hopp 658407
  has_key( {dict}, {key})		Number	TRUE if {dict} has entry {key}
Karsten Hopp 658407
  haslocaldir()			Number	TRUE if current window executed |:lcd|
Karsten Hopp 658407
--- 1761,1769 ----
Karsten Hopp 658407
  getwinposx()			Number	X coord in pixels of GUI Vim window
Karsten Hopp 658407
  getwinposy()			Number	Y coord in pixels of GUI Vim window
Karsten Hopp 658407
  getwinvar( {nr}, {varname})	any	variable {varname} in window {nr}
Karsten Hopp 658407
! glob( {expr} [, {flag}])	String	expand file wildcards in {expr}
Karsten Hopp 658407
! globpath( {path}, {expr} [, {flag}])
Karsten Hopp 658407
! 				String	do glob({expr}) for all dirs in {path}
Karsten Hopp 658407
  has( {feature})			Number	TRUE if feature {feature} supported
Karsten Hopp 658407
  has_key( {dict}, {key})		Number	TRUE if {dict} has entry {key}
Karsten Hopp 658407
  haslocaldir()			Number	TRUE if current window executed |:lcd|
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 3286,3299 ****
Karsten Hopp 658407
  			:let list_is_on = getwinvar(2, '&list')
Karsten Hopp 658407
  			:echo "myvar = " . getwinvar(1, 'myvar')
Karsten Hopp 658407
  <
Karsten Hopp 658407
! 							*glob()*
Karsten Hopp 658407
! glob({expr})	Expand the file wildcards in {expr}.  See |wildcards| for the
Karsten Hopp 658407
  		use of special characters.
Karsten Hopp 658407
  		The result is a String.
Karsten Hopp 658407
  		When there are several matches, they are separated by <NL>
Karsten Hopp 658407
  		characters.
Karsten Hopp 658407
! 		The 'wildignore' option applies: Names matching one of the
Karsten Hopp 658407
! 		patterns in 'wildignore' will be skipped.
Karsten Hopp 658407
  		If the expansion fails, the result is an empty string.
Karsten Hopp 658407
  		A name for a non-existing file is not included.
Karsten Hopp 658407
  
Karsten Hopp 658407
--- 3290,3305 ----
Karsten Hopp 658407
  			:let list_is_on = getwinvar(2, '&list')
Karsten Hopp 658407
  			:echo "myvar = " . getwinvar(1, 'myvar')
Karsten Hopp 658407
  <
Karsten Hopp 658407
! glob({expr} [, {flag}])					*glob()*
Karsten Hopp 658407
! 		Expand the file wildcards in {expr}.  See |wildcards| for the
Karsten Hopp 658407
  		use of special characters.
Karsten Hopp 658407
  		The result is a String.
Karsten Hopp 658407
  		When there are several matches, they are separated by <NL>
Karsten Hopp 658407
  		characters.
Karsten Hopp 658407
! 		Unless the optional {flag} argument is given and is non-zero,
Karsten Hopp 658407
! 		the 'suffixes' and 'wildignore' options apply: Names matching
Karsten Hopp 658407
! 		one of the patterns in 'wildignore' will be skipped and
Karsten Hopp 658407
! 		'suffixes' affect the ordering of matches.
Karsten Hopp 658407
  		If the expansion fails, the result is an empty string.
Karsten Hopp 658407
  		A name for a non-existing file is not included.
Karsten Hopp 658407
  
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 3307,3326 ****
Karsten Hopp 658407
  		See |expand()| for expanding special Vim variables.  See
Karsten Hopp 658407
  		|system()| for getting the raw output of an external command.
Karsten Hopp 658407
  
Karsten Hopp 658407
! globpath({path}, {expr})				*globpath()*
Karsten Hopp 658407
  		Perform glob() on all directories in {path} and concatenate
Karsten Hopp 658407
  		the results.  Example: >
Karsten Hopp 658407
  			:echo globpath(&rtp, "syntax/c.vim")
Karsten Hopp 658407
  <		{path} is a comma-separated list of directory names.  Each
Karsten Hopp 658407
  		directory name is prepended to {expr} and expanded like with
Karsten Hopp 658407
! 		glob().  A path separator is inserted when needed.
Karsten Hopp 658407
  		To add a comma inside a directory name escape it with a
Karsten Hopp 658407
  		backslash.  Note that on MS-Windows a directory may have a
Karsten Hopp 658407
  		trailing backslash, remove it if you put a comma after it.
Karsten Hopp 658407
  		If the expansion fails for one of the directories, there is no
Karsten Hopp 658407
  		error message.
Karsten Hopp 658407
! 		The 'wildignore' option applies: Names matching one of the
Karsten Hopp 658407
! 		patterns in 'wildignore' will be skipped.
Karsten Hopp 658407
  
Karsten Hopp 658407
  		The "**" item can be used to search in a directory tree.
Karsten Hopp 658407
  		For example, to find all "README.txt" files in the directories
Karsten Hopp 658407
--- 3313,3334 ----
Karsten Hopp 658407
  		See |expand()| for expanding special Vim variables.  See
Karsten Hopp 658407
  		|system()| for getting the raw output of an external command.
Karsten Hopp 658407
  
Karsten Hopp 658407
! globpath({path}, {expr} [, {flag}])			*globpath()*
Karsten Hopp 658407
  		Perform glob() on all directories in {path} and concatenate
Karsten Hopp 658407
  		the results.  Example: >
Karsten Hopp 658407
  			:echo globpath(&rtp, "syntax/c.vim")
Karsten Hopp 658407
  <		{path} is a comma-separated list of directory names.  Each
Karsten Hopp 658407
  		directory name is prepended to {expr} and expanded like with
Karsten Hopp 658407
! 		|glob()|.  A path separator is inserted when needed.
Karsten Hopp 658407
  		To add a comma inside a directory name escape it with a
Karsten Hopp 658407
  		backslash.  Note that on MS-Windows a directory may have a
Karsten Hopp 658407
  		trailing backslash, remove it if you put a comma after it.
Karsten Hopp 658407
  		If the expansion fails for one of the directories, there is no
Karsten Hopp 658407
  		error message.
Karsten Hopp 658407
! 		Unless the optional {flag} argument is given and is non-zero,
Karsten Hopp 658407
! 		the 'suffixes' and 'wildignore' options apply: Names matching
Karsten Hopp 658407
! 		one of the patterns in 'wildignore' will be skipped and
Karsten Hopp 658407
! 		'suffixes' affect the ordering of matches.
Karsten Hopp 658407
  
Karsten Hopp 658407
  		The "**" item can be used to search in a directory tree.
Karsten Hopp 658407
  		For example, to find all "README.txt" files in the directories
Karsten Hopp 658407
*** ../vim-7.2.050/runtime/doc/options.txt	Sat Aug  9 19:36:49 2008
Karsten Hopp 658407
--- runtime/doc/options.txt	Tue Nov 25 23:43:55 2008
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 1,4 ****
Karsten Hopp 658407
! *options.txt*	For Vim version 7.2.  Last change: 2008 Aug 06
Karsten Hopp 658407
  
Karsten Hopp 658407
  
Karsten Hopp 658407
  		  VIM REFERENCE MANUAL	  by Bram Moolenaar
Karsten Hopp 658407
--- 1,4 ----
Karsten Hopp 658407
! *options.txt*	For Vim version 7.2.  Last change: 2008 Nov 25
Karsten Hopp 658407
  
Karsten Hopp 658407
  
Karsten Hopp 658407
  		  VIM REFERENCE MANUAL	  by Bram Moolenaar
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 7472,7478 ****
Karsten Hopp 658407
  			{not available when compiled without the |+wildignore|
Karsten Hopp 658407
  			feature}
Karsten Hopp 658407
  	A list of file patterns.  A file that matches with one of these
Karsten Hopp 658407
! 	patterns is ignored when completing file or directory names.
Karsten Hopp 658407
  	The pattern is used like with |:autocmd|, see |autocmd-patterns|.
Karsten Hopp 658407
  	Also see 'suffixes'.
Karsten Hopp 658407
  	Example: >
Karsten Hopp 658407
--- 7481,7489 ----
Karsten Hopp 658407
  			{not available when compiled without the |+wildignore|
Karsten Hopp 658407
  			feature}
Karsten Hopp 658407
  	A list of file patterns.  A file that matches with one of these
Karsten Hopp 658407
! 	patterns is ignored when completing file or directory names, and
Karsten Hopp 658407
! 	influences the result of |expand()|, |glob()| and |globpath()| unless
Karsten Hopp 658407
! 	a flag is passed to disable this.
Karsten Hopp 658407
  	The pattern is used like with |:autocmd|, see |autocmd-patterns|.
Karsten Hopp 658407
  	Also see 'suffixes'.
Karsten Hopp 658407
  	Example: >
Karsten Hopp 658407
*** ../vim-7.2.050/src/version.c	Fri Nov 28 10:08:05 2008
Karsten Hopp 658407
--- src/version.c	Fri Nov 28 10:55:44 2008
Karsten Hopp 658407
***************
Karsten Hopp 658407
*** 678,679 ****
Karsten Hopp 658407
--- 678,681 ----
Karsten Hopp 658407
  {   /* Add new patch number below this line */
Karsten Hopp 658407
+ /**/
Karsten Hopp 658407
+     51,
Karsten Hopp 658407
  /**/
Karsten Hopp 658407
Karsten Hopp 658407
-- 
Karsten Hopp 658407
Not too long ago, unzipping in public was illegal...
Karsten Hopp 658407
Karsten Hopp 658407
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 658407
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 658407
\\\        download, build and distribute -- http://www.A-A-P.org        ///
Karsten Hopp 658407
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///