diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-08-02 19:52:15 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-08-02 19:52:15 +0200 |
commit | 50f91d22bd81819d5d946f6c38252c7922120ec6 (patch) | |
tree | d912f1df29edd7983c990f5a64049ba71a4be6b8 /src | |
parent | 8750026a7f6b445c43adc990141a3fe92d680b62 (diff) | |
download | vim-git-50f91d22bd81819d5d946f6c38252c7922120ec6.tar.gz |
patch 8.1.1791: 'completeslash' also applies to globpath()v8.1.1791
Problem: 'completeslash' also applies to globpath().
Solution: Add the WILD_IGNORE_COMPLETESLASH flag. (test by Yasuhiro
Matsumoto, closes #4760)
Diffstat (limited to 'src')
-rw-r--r-- | src/evalfunc.c | 6 | ||||
-rw-r--r-- | src/ex_getln.c | 4 | ||||
-rw-r--r-- | src/testdir/test_ins_complete.vim | 12 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim.h | 21 |
5 files changed, 25 insertions, 20 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c index 7eff7ad35..54fc2f548 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -5878,15 +5878,15 @@ f_glob(typval_T *argvars, typval_T *rettv) 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 index 7ef304ddb..0e5d2baa6 100644 --- 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 index fedb38acb..e48a72c5d 100644 --- 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 index 81f59f944..e93ef430b 100644 --- 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, @@ -785,16 +785,17 @@ extern int (*dyn_libintl_wputenv)(const wchar_t *envstring); #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 |