]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.4.654 v7.4.654
authorBram Moolenaar <Bram@vim.org>
Thu, 5 Mar 2015 18:35:25 +0000 (19:35 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 5 Mar 2015 18:35:25 +0000 (19:35 +0100)
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().

src/eval.c
src/ex_getln.c
src/version.c
src/vim.h

index 508a26c1fa6ef82afb2b3bb59337028055aaba67..cb584f8b8ecbbf472cbfa4e4efe0483c68922af8 100644 (file)
@@ -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)
index d8db15abf6610875e6b144c82d0b066af2d5b5f0..e18a8ede93cc53b0c5538c80dd7ab759ec2d7651 100644 (file)
@@ -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
index b1065034133d668ea267c3217bd3d6dd5fcd9b42..a814baf361a18c6769a3426040f4488b019137ca 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    654,
 /**/
     653,
 /**/
index 61cd5b900ca88f374bc1eae02094a4075112dece..825c844c2c59133c7ca9d3bf7720add7f1708925 100644 (file)
--- a/src/vim.h
+++ b/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 */