# HG changeset patch # User Bram Moolenaar # Date 1601139603 -7200 # Node ID 0a57700612959221ca73891faba805b12b2ec270 # Parent 44cb9b1dc1ed0dfae32794ceb1c8f00d86beef27 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash' Commit: https://github.com/vim/vim/commit/8f187fc6304222956f94a700758a490cc8c0af99 Author: Bram Moolenaar Date: Sat Sep 26 18:47:11 2020 +0200 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash' Problem: Result of expand() unexpectedly depends on 'completeslash'. Solution: Temporarily reset 'completeslash'. (Yasuhiro Matsumoto, closes #7021) diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -2436,6 +2436,12 @@ f_expand(typval_T *argvars, typval_T *re expand_T xpc; int error = FALSE; char_u *result; +#ifdef BACKSLASH_IN_FILENAME + char_u *p_csl_save = p_csl; + + // avoid using 'completeslash' here + p_csl = empty_option; +#endif rettv->v_type = VAR_STRING; if (argvars[1].v_type != VAR_UNKNOWN @@ -2488,6 +2494,9 @@ f_expand(typval_T *argvars, typval_T *re else rettv->vval.v_string = NULL; } +#ifdef BACKSLASH_IN_FILENAME + p_csl = p_csl_save; +#endif } /* 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 @@ -363,12 +363,12 @@ endfunc " Test for insert path completion with completeslash option func Test_ins_completeslash() CheckMSWindows - + call mkdir('Xdir') let orig_shellslash = &shellslash set cpt& new - + set noshellslash set completeslash= @@ -654,4 +654,17 @@ func Test_complete_cmdline() close! endfunc +func Test_issue_7021() + CheckMSWindows + + let orig_shellslash = &shellslash + set noshellslash + + set completeslash=slash + call assert_false(expand('~') =~ '/') + + let &shellslash = orig_shellslash + set completeslash= +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1747, +/**/ 1746, /**/ 1745,