changeset 17588:1348696d07cd v8.1.1791

patch 8.1.1791: 'completeslash' also applies to globpath() commit https://github.com/vim/vim/commit/50f91d22bd81819d5d946f6c38252c7922120ec6 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Aug 2 19:52:15 2019 +0200 patch 8.1.1791: 'completeslash' also applies to globpath() Problem: 'completeslash' also applies to globpath(). Solution: Add the WILD_IGNORE_COMPLETESLASH flag. (test by Yasuhiro Matsumoto, closes #4760)
author Bram Moolenaar <Bram@vim.org>
date Fri, 02 Aug 2019 20:00:07 +0200
parents f4d6636bc399
children 5c29f5419166
files src/evalfunc.c src/ex_getln.c src/testdir/test_ins_complete.vim src/version.c src/vim.h
diffstat 5 files changed, 25 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5878,15 +5878,15 @@ f_glob(typval_T *argvars, typval_T *rett
     static void
 f_globpath(typval_T *argvars, typval_T *rettv)
 {
-    int		flags = 0;
+    int		flags = WILD_IGNORE_COMPLETESLASH;
     char_u	buf1[NUMBUFLEN];
     char_u	*file = tv_get_string_buf_chk(&argvars[1], buf1);
     int		error = FALSE;
     garray_T	ga;
     int		i;
 
-    /* When the optional second argument is non-zero, don't remove matches
-    * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+    // When the optional second argument is non-zero, don't remove matches
+    // for 'wildignore' and don't put matches for 'suffixes' at the end.
     rettv->v_type = VAR_STRING;
     if (argvars[2].v_type != VAR_UNKNOWN)
     {
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -5032,7 +5032,7 @@ ExpandFromContext(
     char_u	*pat,
     int		*num_file,
     char_u	***file,
-    int		options)  /* EW_ flags */
+    int		options)  // WILD_ flags
 {
 #ifdef FEAT_CMDL_COMPL
     regmatch_T	regmatch;
@@ -5096,7 +5096,7 @@ ExpandFromContext(
 	if (free_pat)
 	    vim_free(pat);
 #ifdef BACKSLASH_IN_FILENAME
-	if (p_csl[0] != NUL)
+	if (p_csl[0] != NUL && (options & WILD_IGNORE_COMPLETESLASH) == 0)
 	{
 	    int	    i;
 
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -1,3 +1,4 @@
+source check.vim
 
 " Test for insert expansion
 func Test_ins_complete()
@@ -334,15 +335,11 @@ endfunc
 
 " Test for insert path completion with completeslash option
 func Test_ins_completeslash()
-  if !has('win32')
-    throw 'Skipped: only works on MS-Windows'
-  endif
+  CheckMSWindows
   
   call mkdir('Xdir')
-
   let orig_shellslash = &shellslash
   set cpt&
-
   new
   
   set noshellslash
@@ -375,6 +372,11 @@ func Test_ins_completeslash()
   %bw!
   call delete('Xdir', 'rf')
 
+  set noshellslash
+  set completeslash=slash
+  call assert_true(stridx(globpath(&rtp, 'syntax/*.vim', 1, 1)[0], '\') != -1)
+
   let &shellslash = orig_shellslash
+  set completeslash=
 endfunc
 
--- a/src/version.c
+++ b/src/version.c
@@ -774,6 +774,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1791,
+/**/
     1790,
 /**/
     1789,
--- a/src/vim.h
+++ b/src/vim.h
@@ -785,16 +785,17 @@ extern int (*dyn_libintl_wputenv)(const 
 #define WILD_LONGEST		7
 #define WILD_ALL_KEEP		8
 
-#define WILD_LIST_NOTFOUND	0x01
-#define WILD_HOME_REPLACE	0x02
-#define WILD_USE_NL		0x04
-#define WILD_NO_BEEP		0x08
-#define WILD_ADD_SLASH		0x10
-#define WILD_KEEP_ALL		0x20
-#define WILD_SILENT		0x40
-#define WILD_ESCAPE		0x80
-#define WILD_ICASE		0x100
-#define WILD_ALLLINKS		0x200
+#define WILD_LIST_NOTFOUND	    0x01
+#define WILD_HOME_REPLACE	    0x02
+#define WILD_USE_NL		    0x04
+#define WILD_NO_BEEP		    0x08
+#define WILD_ADD_SLASH		    0x10
+#define WILD_KEEP_ALL		    0x20
+#define WILD_SILENT		    0x40
+#define WILD_ESCAPE		    0x80
+#define WILD_ICASE		    0x100
+#define WILD_ALLLINKS		    0x200
+#define WILD_IGNORE_COMPLETESLASH   0x400
 
 // Flags for expand_wildcards()
 #define EW_DIR		0x01	// include directory names