mirror of
https://github.com/vim/vim
synced 2025-07-16 09:12:00 +00:00
updated for version 7.4.654
Problem: glob() and globpath() cannot include links to non-existing files. (Charles Campbell) Solution: Add an argument to include all links with glob(). (James McCoy) Also for globpath().
This commit is contained in:
30
src/eval.c
30
src/eval.c
@ -8141,8 +8141,8 @@ static struct fst
|
||||
{"getwinposx", 0, 0, f_getwinposx},
|
||||
{"getwinposy", 0, 0, f_getwinposy},
|
||||
{"getwinvar", 2, 3, f_getwinvar},
|
||||
{"glob", 1, 3, f_glob},
|
||||
{"globpath", 2, 4, f_globpath},
|
||||
{"glob", 1, 4, f_glob},
|
||||
{"globpath", 2, 5, f_globpath},
|
||||
{"has", 1, 1, f_has},
|
||||
{"has_key", 2, 2, f_has_key},
|
||||
{"haslocaldir", 0, 0, f_haslocaldir},
|
||||
@ -12412,11 +12412,16 @@ f_glob(argvars, rettv)
|
||||
{
|
||||
if (get_tv_number_chk(&argvars[1], &error))
|
||||
options |= WILD_KEEP_ALL;
|
||||
if (argvars[2].v_type != VAR_UNKNOWN
|
||||
&& get_tv_number_chk(&argvars[2], &error))
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
{
|
||||
rettv->v_type = VAR_LIST;
|
||||
rettv->vval.v_list = NULL;
|
||||
if (get_tv_number_chk(&argvars[2], &error))
|
||||
{
|
||||
rettv->v_type = VAR_LIST;
|
||||
rettv->vval.v_list = NULL;
|
||||
}
|
||||
if (argvars[3].v_type != VAR_UNKNOWN
|
||||
&& get_tv_number_chk(&argvars[3], &error))
|
||||
options |= WILD_ALLLINKS;
|
||||
}
|
||||
}
|
||||
if (!error)
|
||||
@ -12466,11 +12471,16 @@ f_globpath(argvars, rettv)
|
||||
{
|
||||
if (get_tv_number_chk(&argvars[2], &error))
|
||||
flags |= WILD_KEEP_ALL;
|
||||
if (argvars[3].v_type != VAR_UNKNOWN
|
||||
&& get_tv_number_chk(&argvars[3], &error))
|
||||
if (argvars[3].v_type != VAR_UNKNOWN)
|
||||
{
|
||||
rettv->v_type = VAR_LIST;
|
||||
rettv->vval.v_list = NULL;
|
||||
if (get_tv_number_chk(&argvars[3], &error))
|
||||
{
|
||||
rettv->v_type = VAR_LIST;
|
||||
rettv->vval.v_list = NULL;
|
||||
}
|
||||
if (argvars[4].v_type != VAR_UNKNOWN
|
||||
&& get_tv_number_chk(&argvars[4], &error))
|
||||
flags |= WILD_ALLLINKS;
|
||||
}
|
||||
}
|
||||
if (file != NULL && !error)
|
||||
|
@ -4563,6 +4563,8 @@ ExpandFromContext(xp, pat, num_file, file, options)
|
||||
flags |= EW_KEEPALL;
|
||||
if (options & WILD_SILENT)
|
||||
flags |= EW_SILENT;
|
||||
if (options & WILD_ALLLINKS)
|
||||
flags |= EW_ALLLINKS;
|
||||
|
||||
if (xp->xp_context == EXPAND_FILES
|
||||
|| xp->xp_context == EXPAND_DIRECTORIES
|
||||
|
@ -741,6 +741,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
654,
|
||||
/**/
|
||||
653,
|
||||
/**/
|
||||
|
20
src/vim.h
20
src/vim.h
@ -814,15 +814,16 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
|
||||
#define WILD_LONGEST 7
|
||||
#define WILD_ALL_KEEP 8
|
||||
|
||||
#define WILD_LIST_NOTFOUND 1
|
||||
#define WILD_HOME_REPLACE 2
|
||||
#define WILD_USE_NL 4
|
||||
#define WILD_NO_BEEP 8
|
||||
#define WILD_ADD_SLASH 16
|
||||
#define WILD_KEEP_ALL 32
|
||||
#define WILD_SILENT 64
|
||||
#define WILD_ESCAPE 128
|
||||
#define WILD_ICASE 256
|
||||
#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
|
||||
|
||||
/* Flags for expand_wildcards() */
|
||||
#define EW_DIR 0x01 /* include directory names */
|
||||
@ -839,6 +840,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
|
||||
#define EW_KEEPDOLLAR 0x800 /* do not escape $, $var is expanded */
|
||||
/* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
|
||||
* is used when executing commands and EW_SILENT for interactive expanding. */
|
||||
#define EW_ALLLINKS 0x1000 /* also links not pointing to existing file */
|
||||
|
||||
/* Flags for find_file_*() functions. */
|
||||
#define FINDFILE_FILE 0 /* only files */
|
||||
|
Reference in New Issue
Block a user