Problem: 'completeslash' also applies to globpath().
Solution: Add the WILD_IGNORE_COMPLETESLASH flag. (test by Yasuhiro
Matsumoto, closes #4760)
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)
{
char_u *pat,
int *num_file,
char_u ***file,
- int options) /* EW_ flags */
+ int options) // WILD_ flags
{
#ifdef FEAT_CMDL_COMPL
regmatch_T regmatch;
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;
+source check.vim
" Test for insert expansion
func Test_ins_complete()
" 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
%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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1791,
/**/
1790,
/**/
#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