forked from aniani/vim
patch 9.1.0568: Cannot expand paths from 'cdpath' setting
Problem: Cannot expand paths from 'cdpath' setting (Daniel Hahler) Solution: Implement 'cdpath' completion, add the new 'dir_in_path' completion type (LemonBoy) fixes #374 closes: #15205 Signed-off-by: LemonBoy <thatlemon@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
764526e279
commit
a20bf69a3b
@ -4065,6 +4065,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
|
|||||||
customlist,{func} custom completion, defined via {func}
|
customlist,{func} custom completion, defined via {func}
|
||||||
diff_buffer |:diffget| and |:diffput| completion
|
diff_buffer |:diffget| and |:diffput| completion
|
||||||
dir directory names
|
dir directory names
|
||||||
|
dir_in_path directory names in |'cdpath'|
|
||||||
environment environment variable names
|
environment environment variable names
|
||||||
event autocommand events
|
event autocommand events
|
||||||
expression Vim expression
|
expression Vim expression
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*map.txt* For Vim version 9.1. Last change: 2024 May 05
|
*map.txt* For Vim version 9.1. Last change: 2024 Jul 11
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -1631,6 +1631,7 @@ completion can be enabled:
|
|||||||
-complete=compiler compilers
|
-complete=compiler compilers
|
||||||
-complete=cscope |:cscope| suboptions
|
-complete=cscope |:cscope| suboptions
|
||||||
-complete=dir directory names
|
-complete=dir directory names
|
||||||
|
-complete=dir_in_path directory names in |'cdpath'|
|
||||||
-complete=environment environment variable names
|
-complete=environment environment variable names
|
||||||
-complete=event autocommand events
|
-complete=event autocommand events
|
||||||
-complete=expression Vim expression
|
-complete=expression Vim expression
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*todo.txt* For Vim version 9.1. Last change: 2024 Jul 04
|
*todo.txt* For Vim version 9.1. Last change: 2024 Jul 11
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -539,7 +539,6 @@ SpellCap doesn't show below a closed fold. #12420
|
|||||||
- Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19)
|
- Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19)
|
||||||
- Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME.
|
- Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME.
|
||||||
(2006 Jul 26, Gary Johnson)
|
(2006 Jul 26, Gary Johnson)
|
||||||
- Completion of ":cd" doesn't use 'cdpath'. #374.
|
|
||||||
|
|
||||||
Make "g>" and "g<" in Visual mode move the text right or left.
|
Make "g>" and "g<" in Visual mode move the text right or left.
|
||||||
Also for a block selection. #8558
|
Also for a block selection. #8558
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*version9.txt* For Vim version 9.1. Last change: 2024 Jul 10
|
*version9.txt* For Vim version 9.1. Last change: 2024 Jul 11
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -41583,6 +41583,9 @@ Changed~
|
|||||||
- moving in the buffer list using |:bnext| and similar commands, behaves as
|
- moving in the buffer list using |:bnext| and similar commands, behaves as
|
||||||
documented and skips help buffers (if not run from a help buffer, else
|
documented and skips help buffers (if not run from a help buffer, else
|
||||||
moves to the next/previous help buffer).
|
moves to the next/previous help buffer).
|
||||||
|
- allow to complete directories from 'cdpath' for |:cd| and similar commands,
|
||||||
|
add the "cd_in_path" completion type for e.g. |:command-complete| and
|
||||||
|
|getcompletion()|
|
||||||
|
|
||||||
*added-9.2*
|
*added-9.2*
|
||||||
Added ~
|
Added ~
|
||||||
|
@ -400,7 +400,7 @@ endif
|
|||||||
syn case ignore
|
syn case ignore
|
||||||
syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
|
syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
|
||||||
" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
|
" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
|
||||||
syn keyword vimUserAttrbCmplt contained arglist augroup behave buffer color command compiler cscope diff_buffer dir environment event expression file file_in_path filetype function help highlight history keymap locale mapclear mapping menu messages syntax syntime option packadd runtime shellcmd sign tag tag_listfiles user var breakpoint scriptnames
|
syn keyword vimUserAttrbCmplt contained arglist augroup behave buffer color command compiler cscope diff_buffer dir environment event expression file file_in_path filetype function help highlight history keymap locale mapclear mapping menu messages syntax syntime option packadd runtime shellcmd sign tag tag_listfiles user var breakpoint scriptnames dir_in_path
|
||||||
syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
|
syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
|
||||||
syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
|
syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@ cmdline_fuzzy_completion_supported(expand_T *xp)
|
|||||||
&& xp->xp_context != EXPAND_COLORS
|
&& xp->xp_context != EXPAND_COLORS
|
||||||
&& xp->xp_context != EXPAND_COMPILER
|
&& xp->xp_context != EXPAND_COMPILER
|
||||||
&& xp->xp_context != EXPAND_DIRECTORIES
|
&& xp->xp_context != EXPAND_DIRECTORIES
|
||||||
|
&& xp->xp_context != EXPAND_DIRS_IN_CDPATH
|
||||||
&& xp->xp_context != EXPAND_FILES
|
&& xp->xp_context != EXPAND_FILES
|
||||||
&& xp->xp_context != EXPAND_FILES_IN_PATH
|
&& xp->xp_context != EXPAND_FILES_IN_PATH
|
||||||
&& xp->xp_context != EXPAND_FILETYPE
|
&& xp->xp_context != EXPAND_FILETYPE
|
||||||
@ -107,7 +108,8 @@ wildescape(
|
|||||||
|| xp->xp_context == EXPAND_FILES_IN_PATH
|
|| xp->xp_context == EXPAND_FILES_IN_PATH
|
||||||
|| xp->xp_context == EXPAND_SHELLCMD
|
|| xp->xp_context == EXPAND_SHELLCMD
|
||||||
|| xp->xp_context == EXPAND_BUFFERS
|
|| xp->xp_context == EXPAND_BUFFERS
|
||||||
|| xp->xp_context == EXPAND_DIRECTORIES)
|
|| xp->xp_context == EXPAND_DIRECTORIES
|
||||||
|
|| xp->xp_context == EXPAND_DIRS_IN_CDPATH)
|
||||||
{
|
{
|
||||||
// Insert a backslash into a file name before a space, \, %, #
|
// Insert a backslash into a file name before a space, \, %, #
|
||||||
// and wildmatch characters, except '~'.
|
// and wildmatch characters, except '~'.
|
||||||
@ -1404,7 +1406,8 @@ addstar(
|
|||||||
if (context != EXPAND_FILES
|
if (context != EXPAND_FILES
|
||||||
&& context != EXPAND_FILES_IN_PATH
|
&& context != EXPAND_FILES_IN_PATH
|
||||||
&& context != EXPAND_SHELLCMD
|
&& context != EXPAND_SHELLCMD
|
||||||
&& context != EXPAND_DIRECTORIES)
|
&& context != EXPAND_DIRECTORIES
|
||||||
|
&& context != EXPAND_DIRS_IN_CDPATH)
|
||||||
{
|
{
|
||||||
// Matching will be done internally (on something other than files).
|
// Matching will be done internally (on something other than files).
|
||||||
// So we convert the file-matching-type wildcards into our kind for
|
// So we convert the file-matching-type wildcards into our kind for
|
||||||
@ -2138,7 +2141,7 @@ set_context_by_cmdname(
|
|||||||
case CMD_lcd:
|
case CMD_lcd:
|
||||||
case CMD_lchdir:
|
case CMD_lchdir:
|
||||||
if (xp->xp_context == EXPAND_FILES)
|
if (xp->xp_context == EXPAND_FILES)
|
||||||
xp->xp_context = EXPAND_DIRECTORIES;
|
xp->xp_context = EXPAND_DIRS_IN_CDPATH;
|
||||||
break;
|
break;
|
||||||
case CMD_help:
|
case CMD_help:
|
||||||
xp->xp_context = EXPAND_HELP;
|
xp->xp_context = EXPAND_HELP;
|
||||||
@ -2845,6 +2848,8 @@ expand_files_and_dirs(
|
|||||||
flags |= EW_FILE;
|
flags |= EW_FILE;
|
||||||
else if (xp->xp_context == EXPAND_FILES_IN_PATH)
|
else if (xp->xp_context == EXPAND_FILES_IN_PATH)
|
||||||
flags |= (EW_FILE | EW_PATH);
|
flags |= (EW_FILE | EW_PATH);
|
||||||
|
else if (xp->xp_context == EXPAND_DIRS_IN_CDPATH)
|
||||||
|
flags = (flags | EW_DIR | EW_CDPATH) & ~EW_FILE;
|
||||||
else
|
else
|
||||||
flags = (flags | EW_DIR) & ~EW_FILE;
|
flags = (flags | EW_DIR) & ~EW_FILE;
|
||||||
if (options & WILD_ICASE)
|
if (options & WILD_ICASE)
|
||||||
@ -3098,7 +3103,8 @@ ExpandFromContext(
|
|||||||
|
|
||||||
if (xp->xp_context == EXPAND_FILES
|
if (xp->xp_context == EXPAND_FILES
|
||||||
|| xp->xp_context == EXPAND_DIRECTORIES
|
|| xp->xp_context == EXPAND_DIRECTORIES
|
||||||
|| xp->xp_context == EXPAND_FILES_IN_PATH)
|
|| xp->xp_context == EXPAND_FILES_IN_PATH
|
||||||
|
|| xp->xp_context == EXPAND_DIRS_IN_CDPATH)
|
||||||
return expand_files_and_dirs(xp, pat, matches, numMatches, flags,
|
return expand_files_and_dirs(xp, pat, matches, numMatches, flags,
|
||||||
options);
|
options);
|
||||||
|
|
||||||
|
@ -4003,6 +4003,8 @@ gen_expand_wildcards(
|
|||||||
int add_pat;
|
int add_pat;
|
||||||
int retval = OK;
|
int retval = OK;
|
||||||
int did_expand_in_path = FALSE;
|
int did_expand_in_path = FALSE;
|
||||||
|
char_u *path_option = *curbuf->b_p_path == NUL ?
|
||||||
|
p_path : curbuf->b_p_path;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* expand_env() is called to expand things like "~user". If this fails,
|
* expand_env() is called to expand things like "~user". If this fails,
|
||||||
@ -4092,7 +4094,7 @@ gen_expand_wildcards(
|
|||||||
*/
|
*/
|
||||||
if (mch_has_exp_wildcard(p) || (flags & EW_ICASE))
|
if (mch_has_exp_wildcard(p) || (flags & EW_ICASE))
|
||||||
{
|
{
|
||||||
if ((flags & EW_PATH)
|
if ((flags & (EW_PATH | EW_CDPATH))
|
||||||
&& !mch_isFullName(p)
|
&& !mch_isFullName(p)
|
||||||
&& !(p[0] == '.'
|
&& !(p[0] == '.'
|
||||||
&& (vim_ispathsep(p[1])
|
&& (vim_ispathsep(p[1])
|
||||||
@ -4126,8 +4128,8 @@ gen_expand_wildcards(
|
|||||||
vim_free(t);
|
vim_free(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (did_expand_in_path && ga.ga_len > 0 && (flags & EW_PATH))
|
if (did_expand_in_path && ga.ga_len > 0 && (flags & (EW_PATH | EW_CDPATH)))
|
||||||
uniquefy_paths(&ga, p);
|
uniquefy_paths(&ga, p, path_option);
|
||||||
if (p != pat[i])
|
if (p != pat[i])
|
||||||
vim_free(p);
|
vim_free(p);
|
||||||
}
|
}
|
||||||
|
@ -2211,10 +2211,11 @@ is_unique(char_u *maybe_unique, garray_T *gap, int i)
|
|||||||
* expanding each into their equivalent path(s).
|
* expanding each into their equivalent path(s).
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
expand_path_option(char_u *curdir, garray_T *gap)
|
expand_path_option(
|
||||||
|
char_u *curdir,
|
||||||
|
char_u *path_option, // p_path or p_cdpath
|
||||||
|
garray_T *gap)
|
||||||
{
|
{
|
||||||
char_u *path_option = *curbuf->b_p_path == NUL
|
|
||||||
? p_path : curbuf->b_p_path;
|
|
||||||
char_u *buf;
|
char_u *buf;
|
||||||
char_u *p;
|
char_u *p;
|
||||||
int len;
|
int len;
|
||||||
@ -2329,7 +2330,10 @@ get_path_cutoff(char_u *fname, garray_T *gap)
|
|||||||
* that matches the pattern. Beware, this is at least O(n^2) wrt "gap->ga_len".
|
* that matches the pattern. Beware, this is at least O(n^2) wrt "gap->ga_len".
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
uniquefy_paths(garray_T *gap, char_u *pattern)
|
uniquefy_paths(
|
||||||
|
garray_T *gap,
|
||||||
|
char_u *pattern,
|
||||||
|
char_u *path_option) // p_path or p_cdpath
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int len;
|
int len;
|
||||||
@ -2372,7 +2376,7 @@ uniquefy_paths(garray_T *gap, char_u *pattern)
|
|||||||
if ((curdir = alloc(MAXPATHL)) == NULL)
|
if ((curdir = alloc(MAXPATHL)) == NULL)
|
||||||
goto theend;
|
goto theend;
|
||||||
mch_dirname(curdir, MAXPATHL);
|
mch_dirname(curdir, MAXPATHL);
|
||||||
expand_path_option(curdir, &path_ga);
|
expand_path_option(curdir, path_option, &path_ga);
|
||||||
|
|
||||||
in_curdir = ALLOC_CLEAR_MULT(char_u *, gap->ga_len);
|
in_curdir = ALLOC_CLEAR_MULT(char_u *, gap->ga_len);
|
||||||
if (in_curdir == NULL)
|
if (in_curdir == NULL)
|
||||||
@ -2520,13 +2524,17 @@ expand_in_path(
|
|||||||
garray_T path_ga;
|
garray_T path_ga;
|
||||||
char_u *paths = NULL;
|
char_u *paths = NULL;
|
||||||
int glob_flags = 0;
|
int glob_flags = 0;
|
||||||
|
char_u *path_option = *curbuf->b_p_path == NUL ? p_path : curbuf->b_p_path;
|
||||||
|
|
||||||
if ((curdir = alloc(MAXPATHL)) == NULL)
|
if ((curdir = alloc(MAXPATHL)) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
mch_dirname(curdir, MAXPATHL);
|
mch_dirname(curdir, MAXPATHL);
|
||||||
|
|
||||||
ga_init2(&path_ga, sizeof(char_u *), 1);
|
ga_init2(&path_ga, sizeof(char_u *), 1);
|
||||||
expand_path_option(curdir, &path_ga);
|
if (flags & EW_CDPATH)
|
||||||
|
expand_path_option(curdir, p_cdpath, &path_ga);
|
||||||
|
else
|
||||||
|
expand_path_option(curdir, path_option, &path_ga);
|
||||||
vim_free(curdir);
|
vim_free(curdir);
|
||||||
if (path_ga.ga_len == 0)
|
if (path_ga.ga_len == 0)
|
||||||
return 0;
|
return 0;
|
||||||
@ -2540,7 +2548,7 @@ expand_in_path(
|
|||||||
glob_flags |= WILD_ICASE;
|
glob_flags |= WILD_ICASE;
|
||||||
if (flags & EW_ADDSLASH)
|
if (flags & EW_ADDSLASH)
|
||||||
glob_flags |= WILD_ADD_SLASH;
|
glob_flags |= WILD_ADD_SLASH;
|
||||||
globpath(paths, pattern, gap, glob_flags, FALSE);
|
globpath(paths, pattern, gap, glob_flags, !!(flags & EW_CDPATH));
|
||||||
vim_free(paths);
|
vim_free(paths);
|
||||||
|
|
||||||
return gap->ga_len;
|
return gap->ga_len;
|
||||||
|
@ -12,7 +12,7 @@ char_u *file_name_at_cursor(int options, long count, linenr_T *file_lnum);
|
|||||||
char_u *file_name_in_line(char_u *line, int col, int options, long count, char_u *rel_fname, linenr_T *file_lnum);
|
char_u *file_name_in_line(char_u *line, int col, int options, long count, char_u *rel_fname, linenr_T *file_lnum);
|
||||||
char_u *find_file_name_in_path(char_u *ptr, int len, int options, long count, char_u *rel_fname);
|
char_u *find_file_name_in_path(char_u *ptr, int len, int options, long count, char_u *rel_fname);
|
||||||
int vim_ispathlistsep(int c);
|
int vim_ispathlistsep(int c);
|
||||||
void uniquefy_paths(garray_T *gap, char_u *pattern);
|
void uniquefy_paths(garray_T *gap, char_u *pattern, char_u *path_option);
|
||||||
int expand_in_path(garray_T *gap, char_u *pattern, int flags);
|
int expand_in_path(garray_T *gap, char_u *pattern, int flags);
|
||||||
void simplify_filename(char_u *filename);
|
void simplify_filename(char_u *filename);
|
||||||
void f_simplify(typval_T *argvars, typval_T *rettv);
|
void f_simplify(typval_T *argvars, typval_T *rettv);
|
||||||
|
@ -200,12 +200,20 @@ endfunc
|
|||||||
func Test_cd_completion()
|
func Test_cd_completion()
|
||||||
call mkdir('XComplDir1', 'D')
|
call mkdir('XComplDir1', 'D')
|
||||||
call mkdir('XComplDir2', 'D')
|
call mkdir('XComplDir2', 'D')
|
||||||
|
call mkdir('sub/XComplDir3', 'pD')
|
||||||
call writefile([], 'XComplFile', 'D')
|
call writefile([], 'XComplFile', 'D')
|
||||||
|
|
||||||
for cmd in ['cd', 'chdir', 'lcd', 'lchdir', 'tcd', 'tchdir']
|
for cmd in ['cd', 'chdir', 'lcd', 'lchdir', 'tcd', 'tchdir']
|
||||||
call feedkeys(':' .. cmd .. " XCompl\<C-A>\<C-B>\"\<CR>", 'tx')
|
call feedkeys(':' .. cmd .. " XCompl\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||||
call assert_equal('"' .. cmd .. ' XComplDir1/ XComplDir2/', @:)
|
call assert_equal('"' .. cmd .. ' XComplDir1/ XComplDir2/', @:)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
set cdpath+=sub
|
||||||
|
for cmd in ['cd', 'chdir', 'lcd', 'lchdir', 'tcd', 'tchdir']
|
||||||
|
call feedkeys(':' .. cmd .. " XCompl\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||||
|
call assert_equal('"' .. cmd .. ' XComplDir1/ XComplDir2/ XComplDir3/', @:)
|
||||||
|
endfor
|
||||||
|
set cdpath&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_cd_unknown_dir()
|
func Test_cd_unknown_dir()
|
||||||
|
@ -658,7 +658,8 @@ func Test_getcompletion()
|
|||||||
unlet g:cmdline_compl_params
|
unlet g:cmdline_compl_params
|
||||||
|
|
||||||
" For others test if the name is recognized.
|
" For others test if the name is recognized.
|
||||||
let names = ['buffer', 'environment', 'file_in_path', 'mapping', 'tag', 'tag_listfiles', 'user']
|
let names = ['buffer', 'environment', 'file_in_path', 'dir_in_path', 'mapping', 'tag',
|
||||||
|
\ 'tag_listfiles', 'user']
|
||||||
if has('cmdline_hist')
|
if has('cmdline_hist')
|
||||||
call add(names, 'history')
|
call add(names, 'history')
|
||||||
endif
|
endif
|
||||||
|
@ -102,6 +102,7 @@ static struct
|
|||||||
{EXPAND_BREAKPOINT, "breakpoint"},
|
{EXPAND_BREAKPOINT, "breakpoint"},
|
||||||
{EXPAND_SCRIPTNAMES, "scriptnames"},
|
{EXPAND_SCRIPTNAMES, "scriptnames"},
|
||||||
#endif
|
#endif
|
||||||
|
{EXPAND_DIRS_IN_CDPATH, "dir_in_path"},
|
||||||
{0, NULL}
|
{0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
568,
|
||||||
/**/
|
/**/
|
||||||
567,
|
567,
|
||||||
/**/
|
/**/
|
||||||
|
@ -843,6 +843,8 @@ extern int (*dyn_libintl_wputenv)(const wchar_t *envstring);
|
|||||||
#define EXPAND_ARGOPT 56
|
#define EXPAND_ARGOPT 56
|
||||||
#define EXPAND_TERMINALOPT 57
|
#define EXPAND_TERMINALOPT 57
|
||||||
#define EXPAND_KEYMAP 58
|
#define EXPAND_KEYMAP 58
|
||||||
|
#define EXPAND_DIRS_IN_CDPATH 59
|
||||||
|
|
||||||
|
|
||||||
// Values for exmode_active (0 is no exmode)
|
// Values for exmode_active (0 is no exmode)
|
||||||
#define EXMODE_NORMAL 1
|
#define EXMODE_NORMAL 1
|
||||||
@ -898,6 +900,7 @@ extern int (*dyn_libintl_wputenv)(const wchar_t *envstring);
|
|||||||
#define EW_DODOT 0x4000 // also files starting with a dot
|
#define EW_DODOT 0x4000 // also files starting with a dot
|
||||||
#define EW_EMPTYOK 0x8000 // no matches is not an error
|
#define EW_EMPTYOK 0x8000 // no matches is not an error
|
||||||
#define EW_NOTENV 0x10000 // do not expand environment variables
|
#define EW_NOTENV 0x10000 // do not expand environment variables
|
||||||
|
#define EW_CDPATH 0x20000 // search in 'cdpath' too
|
||||||
|
|
||||||
// Flags for find_file_*() functions.
|
// Flags for find_file_*() functions.
|
||||||
#define FINDFILE_FILE 0 // only files
|
#define FINDFILE_FILE 0 // only files
|
||||||
|
Loading…
x
Reference in New Issue
Block a user