# HG changeset patch # User Bram Moolenaar # Date 1564768807 -7200 # Node ID 1348696d07cdd072693ef089260c7eb7acaacaf4 # Parent f4d6636bc399d1b91c32403d8515aa1aa5eb50c9 patch 8.1.1791: 'completeslash' also applies to globpath() commit https://github.com/vim/vim/commit/50f91d22bd81819d5d946f6c38252c7922120ec6 Author: Bram Moolenaar 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) diff --git a/src/evalfunc.c b/src/evalfunc.c --- 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) { diff --git a/src/ex_getln.c b/src/ex_getln.c --- 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; diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim --- 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 diff --git a/src/version.c b/src/version.c --- 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, diff --git a/src/vim.h b/src/vim.h --- 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