mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
vim-patch:9.1.1572: expanding $var does not escape whitespace for 'path' (#35010)
Problem: expanding $var does not escape whitespace for 'path'
Solution: Escape whitespace when expanding 'path' option.
(Miguel Barro)
closes: vim/vim#17801
8b004081c4
Co-authored-by: Miguel Barro <miguel.barro@live.com>
This commit is contained in:
@@ -1593,13 +1593,13 @@ static char *option_expand(OptIndex opt_idx, const char *val)
|
||||
}
|
||||
|
||||
// Expanding this with NameBuff, expand_env() must not be passed IObuff.
|
||||
// Escape spaces when expanding 'tags', they are used to separate file
|
||||
// names.
|
||||
// Escape spaces when expanding 'tags' or 'path', they are used to separate
|
||||
// file names.
|
||||
// For 'spellsuggest' expand after "file:".
|
||||
expand_env_esc(val, NameBuff, MAXPATHL,
|
||||
(char **)options[opt_idx].var == &p_tags, false,
|
||||
(char **)options[opt_idx].var == &p_sps ? "file:"
|
||||
: NULL);
|
||||
char **var = (char **)options[opt_idx].var;
|
||||
bool esc = var == &p_tags || var == &p_path;
|
||||
expand_env_esc(val, NameBuff, MAXPATHL, esc, false,
|
||||
(char **)options[opt_idx].var == &p_sps ? "file:" : NULL);
|
||||
if (strcmp(NameBuff, val) == 0) { // they are the same
|
||||
return NULL;
|
||||
}
|
||||
|
@@ -840,5 +840,36 @@ func Test_findfunc_callback()
|
||||
%bw!
|
||||
endfunc
|
||||
|
||||
" Test using environment variables with spaces
|
||||
func Test_path_env_variable_with_whitespaces()
|
||||
let save_path = &path
|
||||
defer execute('let &path = save_path')
|
||||
|
||||
let $testdir = 'Xpath with some whites'
|
||||
call mkdir($testdir, 'R')
|
||||
|
||||
" Check direct usage yields the same result that autocomplete
|
||||
call feedkeys(':set path=$testdir' .. "\<C-A>\<CR>", 'xt')
|
||||
let auto_testpath = &path
|
||||
" include autocomplete suffix
|
||||
exe "set path=$testdir" .. "/"
|
||||
call assert_equal(auto_testpath, &path)
|
||||
|
||||
" Check a file can be found using environment variables
|
||||
let expanded_test_path = expand('$testdir/test.txt')
|
||||
call writefile(['testing...'], expanded_test_path)
|
||||
|
||||
" hinting an environment variable path
|
||||
call assert_equal(expanded_test_path, findfile('test.txt', $test_dir))
|
||||
|
||||
" using 'path' option with an environment variable
|
||||
set path=$testdir
|
||||
call assert_equal(expanded_test_path, findfile('test.txt'))
|
||||
|
||||
" using :find instead of findfile()
|
||||
find test.txt
|
||||
call assert_equal(expanded_test_path, expand('%:.'))
|
||||
enew
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
Reference in New Issue
Block a user