summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.465
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.465')
-rw-r--r--source/ap/vim/patches/7.3.465398
1 files changed, 398 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.465 b/source/ap/vim/patches/7.3.465
new file mode 100644
index 000000000..c4a857ac9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.465
@@ -0,0 +1,398 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.465
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.465
+Problem: Cannot get file name with newline from glob().
+Solution: Add argument to glob() and expand() to indicate they must return a
+ list. (Christian Brabandt)
+Files: runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/vim.h
+
+
+*** ../vim-7.3.464/runtime/doc/eval.txt 2011-12-14 15:32:44.000000000 +0100
+--- runtime/doc/eval.txt 2012-03-07 18:49:26.000000000 +0100
+***************
+*** 1738,1744 ****
+ extend( {expr1}, {expr2} [, {expr3}])
+ List/Dict insert items of {expr2} into {expr1}
+ exp( {expr}) Float exponential of {expr}
+! expand( {expr} [, {flag}]) String expand special keywords in {expr}
+ feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer
+ filereadable( {file}) Number TRUE if {file} is a readable file
+ filewritable( {file}) Number TRUE if {file} is a writable file
+--- 1746,1753 ----
+ extend( {expr1}, {expr2} [, {expr3}])
+ List/Dict insert items of {expr2} into {expr1}
+ exp( {expr}) Float exponential of {expr}
+! expand( {expr} [, {nosuf} [, {list}]])
+! any expand special keywords in {expr}
+ feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer
+ filereadable( {file}) Number TRUE if {file} is a readable file
+ filewritable( {file}) Number TRUE if {file} is a writable file
+***************
+*** 1792,1798 ****
+ getwinposx() Number X coord in pixels of GUI Vim window
+ getwinposy() Number Y coord in pixels of GUI Vim window
+ getwinvar( {nr}, {varname}) any variable {varname} in window {nr}
+! glob( {expr} [, {flag}]) String expand file wildcards in {expr}
+ globpath( {path}, {expr} [, {flag}])
+ String do glob({expr}) for all dirs in {path}
+ has( {feature}) Number TRUE if feature {feature} supported
+--- 1801,1808 ----
+ getwinposx() Number X coord in pixels of GUI Vim window
+ getwinposy() Number Y coord in pixels of GUI Vim window
+ getwinvar( {nr}, {varname}) any variable {varname} in window {nr}
+! glob( {expr} [, {nosuf} [, {list}]])
+! any expand file wildcards in {expr}
+ globpath( {path}, {expr} [, {flag}])
+ String do glob({expr}) for all dirs in {path}
+ has( {feature}) Number TRUE if feature {feature} supported
+***************
+*** 2731,2743 ****
+ {only available when compiled with the |+float| feature}
+
+
+! expand({expr} [, {flag}]) *expand()*
+ Expand wildcards and the following special keywords in {expr}.
+! The result is a String.
+
+! When there are several matches, they are separated by <NL>
+! characters. [Note: in version 5.0 a space was used, which
+! caused problems when a file name contains a space]
+
+ If the expansion fails, the result is an empty string. A name
+ for a non-existing file is not included.
+--- 2744,2758 ----
+ {only available when compiled with the |+float| feature}
+
+
+! expand({expr} [, {nosuf} [, {list}]]) *expand()*
+ Expand wildcards and the following special keywords in {expr}.
+! 'wildignorecase' applies.
+
+! If {list} is given and it is non-zero, a List will be returned.
+! Otherwise the result is a String and when there are several
+! matches, they are separated by <NL> characters. [Note: in
+! version 5.0 a space was used, which caused problems when a
+! file name contains a space]
+
+ If the expansion fails, the result is an empty string. A name
+ for a non-existing file is not included.
+***************
+*** 2754,2759 ****
+--- 2769,2775 ----
+ <abuf> autocmd buffer number (as a String!)
+ <amatch> autocmd matched name
+ <sfile> sourced script file name
++ <slnum> sourced script file line number
+ <cword> word under the cursor
+ <cWORD> WORD under the cursor
+ <client> the {clientid} of the last received
+***************
+*** 2790,2799 ****
+ When {expr} does not start with '%', '#' or '<', it is
+ expanded like a file name is expanded on the command line.
+ 'suffixes' and 'wildignore' are used, unless the optional
+! {flag} argument is given and it is non-zero. Names for
+! non-existing files are included. The "**" item can be used to
+! search in a directory tree. For example, to find all "README"
+! files in the current directory and below: >
+ :echo expand("**/README")
+ <
+ Expand() can also be used to expand variables and environment
+--- 2806,2815 ----
+ When {expr} does not start with '%', '#' or '<', it is
+ expanded like a file name is expanded on the command line.
+ 'suffixes' and 'wildignore' are used, unless the optional
+! {nosuf} argument is given and it is non-zero.
+! Names for non-existing files are included. The "**" item can
+! be used to search in a directory tree. For example, to find
+! all "README" files in the current directory and below: >
+ :echo expand("**/README")
+ <
+ Expand() can also be used to expand variables and environment
+***************
+*** 3437,3453 ****
+ :let list_is_on = getwinvar(2, '&list')
+ :echo "myvar = " . getwinvar(1, 'myvar')
+ <
+! glob({expr} [, {flag}]) *glob()*
+ Expand the file wildcards in {expr}. See |wildcards| for the
+ use of special characters.
+! The result is a String.
+! When there are several matches, they are separated by <NL>
+! characters.
+! Unless the optional {flag} argument is given and is non-zero,
+ the 'suffixes' and 'wildignore' options apply: Names matching
+ one of the patterns in 'wildignore' will be skipped and
+ 'suffixes' affect the ordering of matches.
+! If the expansion fails, the result is an empty string.
+ A name for a non-existing file is not included.
+
+ For most systems backticks can be used to get files names from
+--- 3456,3478 ----
+ :let list_is_on = getwinvar(2, '&list')
+ :echo "myvar = " . getwinvar(1, 'myvar')
+ <
+! glob({expr} [, {nosuf} [, {list}]]) *glob()*
+ Expand the file wildcards in {expr}. See |wildcards| for the
+ use of special characters.
+!
+! Unless the optional {nosuf} argument is given and is non-zero,
+ the 'suffixes' and 'wildignore' options apply: Names matching
+ one of the patterns in 'wildignore' will be skipped and
+ 'suffixes' affect the ordering of matches.
+! 'wildignorecase' always applies.
+!
+! When {list} is present and it is non-zero the result is a List
+! with all matching files. The advantage of using a List is,
+! you also get filenames containing newlines correctly.
+! Otherwise the result is a String and when there are several
+! matches, they are separated by <NL> characters.
+!
+! If the expansion fails, the result is an empty String or List.
+ A name for a non-existing file is not included.
+
+ For most systems backticks can be used to get files names from
+*** ../vim-7.3.464/src/eval.c 2012-02-11 20:44:01.000000000 +0100
+--- src/eval.c 2012-03-07 19:08:36.000000000 +0100
+***************
+*** 7852,7858 ****
+ #ifdef FEAT_FLOAT
+ {"exp", 1, 1, f_exp},
+ #endif
+! {"expand", 1, 2, f_expand},
+ {"extend", 2, 3, f_extend},
+ {"feedkeys", 1, 2, f_feedkeys},
+ {"file_readable", 1, 1, f_filereadable}, /* obsolete */
+--- 7852,7858 ----
+ #ifdef FEAT_FLOAT
+ {"exp", 1, 1, f_exp},
+ #endif
+! {"expand", 1, 3, f_expand},
+ {"extend", 2, 3, f_extend},
+ {"feedkeys", 1, 2, f_feedkeys},
+ {"file_readable", 1, 1, f_filereadable}, /* obsolete */
+***************
+*** 7903,7909 ****
+ {"getwinposx", 0, 0, f_getwinposx},
+ {"getwinposy", 0, 0, f_getwinposy},
+ {"getwinvar", 2, 2, f_getwinvar},
+! {"glob", 1, 2, f_glob},
+ {"globpath", 2, 3, f_globpath},
+ {"has", 1, 1, f_has},
+ {"has_key", 2, 2, f_has_key},
+--- 7903,7909 ----
+ {"getwinposx", 0, 0, f_getwinposx},
+ {"getwinposy", 0, 0, f_getwinposy},
+ {"getwinvar", 2, 2, f_getwinvar},
+! {"glob", 1, 3, f_glob},
+ {"globpath", 2, 3, f_globpath},
+ {"has", 1, 1, f_has},
+ {"has_key", 2, 2, f_has_key},
+***************
+*** 10019,10032 ****
+ int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
+ expand_T xpc;
+ int error = FALSE;
+
+ rettv->v_type = VAR_STRING;
+ s = get_tv_string(&argvars[0]);
+ if (*s == '%' || *s == '#' || *s == '<')
+ {
+ ++emsg_off;
+! rettv->vval.v_string = eval_vars(s, s, &len, NULL, &errormsg, NULL);
+ --emsg_off;
+ }
+ else
+ {
+--- 10019,10051 ----
+ int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
+ expand_T xpc;
+ int error = FALSE;
++ char_u *result;
+
+ rettv->v_type = VAR_STRING;
++ if (argvars[1].v_type != VAR_UNKNOWN
++ && argvars[2].v_type != VAR_UNKNOWN
++ && get_tv_number_chk(&argvars[2], &error)
++ && !error)
++ {
++ rettv->v_type = VAR_LIST;
++ rettv->vval.v_list = NULL;
++ }
++
+ s = get_tv_string(&argvars[0]);
+ if (*s == '%' || *s == '#' || *s == '<')
+ {
+ ++emsg_off;
+! result = eval_vars(s, s, &len, NULL, &errormsg, NULL);
+ --emsg_off;
++ if (rettv->v_type == VAR_LIST)
++ {
++ if (rettv_list_alloc(rettv) != FAIL && result != NULL)
++ list_append_string(rettv->vval.v_list, result, -1);
++ else
++ vim_free(result);
++ }
++ else
++ rettv->vval.v_string = result;
+ }
+ else
+ {
+***************
+*** 10041,10047 ****
+ xpc.xp_context = EXPAND_FILES;
+ if (p_wic)
+ options += WILD_ICASE;
+! rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL);
+ }
+ else
+ rettv->vval.v_string = NULL;
+--- 10060,10077 ----
+ xpc.xp_context = EXPAND_FILES;
+ if (p_wic)
+ options += WILD_ICASE;
+! if (rettv->v_type == VAR_STRING)
+! rettv->vval.v_string = ExpandOne(&xpc, s, NULL,
+! options, WILD_ALL);
+! else if (rettv_list_alloc(rettv) != FAIL)
+! {
+! int i;
+!
+! ExpandOne(&xpc, s, NULL, options, WILD_ALL_KEEP);
+! for (i = 0; i < xpc.xp_numfiles; i++)
+! list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1);
+! ExpandCleanup(&xpc);
+! }
+ }
+ else
+ rettv->vval.v_string = NULL;
+***************
+*** 11833,11851 ****
+ int error = FALSE;
+
+ /* When the optional second argument is non-zero, don't remove matches
+! * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+! if (argvars[1].v_type != VAR_UNKNOWN
+! && get_tv_number_chk(&argvars[1], &error))
+! options |= WILD_KEEP_ALL;
+ rettv->v_type = VAR_STRING;
+ if (!error)
+ {
+ ExpandInit(&xpc);
+ xpc.xp_context = EXPAND_FILES;
+ if (p_wic)
+ options += WILD_ICASE;
+! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
+ NULL, options, WILD_ALL);
+ }
+ else
+ rettv->vval.v_string = NULL;
+--- 11863,11901 ----
+ int error = FALSE;
+
+ /* When the optional second argument is non-zero, don't remove matches
+! * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+ rettv->v_type = VAR_STRING;
++ if (argvars[1].v_type != VAR_UNKNOWN)
++ {
++ 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))
++ {
++ rettv->v_type = VAR_LIST;
++ rettv->vval.v_list = NULL;
++ }
++ }
+ if (!error)
+ {
+ ExpandInit(&xpc);
+ xpc.xp_context = EXPAND_FILES;
+ if (p_wic)
+ options += WILD_ICASE;
+! if (rettv->v_type == VAR_STRING)
+! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
+ NULL, options, WILD_ALL);
++ else if (rettv_list_alloc(rettv) != FAIL)
++ {
++ int i;
++
++ ExpandOne(&xpc, get_tv_string(&argvars[0]),
++ NULL, options, WILD_ALL_KEEP);
++ for (i = 0; i < xpc.xp_numfiles; i++)
++ list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1);
++
++ ExpandCleanup(&xpc);
++ }
+ }
+ else
+ rettv->vval.v_string = NULL;
+*** ../vim-7.3.464/src/ex_getln.c 2012-02-22 17:58:00.000000000 +0100
+--- src/ex_getln.c 2012-03-07 19:07:01.000000000 +0100
+***************
+*** 3461,3466 ****
+--- 3461,3467 ----
+ * mode = WILD_PREV: use previous match in multiple match, wrap to first
+ * mode = WILD_ALL: return all matches concatenated
+ * mode = WILD_LONGEST: return longest matched part
++ * mode = WILD_ALL_KEEP: get all matches, keep matches
+ *
+ * options = WILD_LIST_NOTFOUND: list entries without a match
+ * options = WILD_HOME_REPLACE: do home_replace() for buffer names
+***************
+*** 3584,3590 ****
+ /*
+ * Check for matching suffixes in file names.
+ */
+! if (mode != WILD_ALL && mode != WILD_LONGEST)
+ {
+ if (xp->xp_numfiles)
+ non_suf_match = xp->xp_numfiles;
+--- 3585,3592 ----
+ /*
+ * Check for matching suffixes in file names.
+ */
+! if (mode != WILD_ALL && mode != WILD_ALL_KEEP
+! && mode != WILD_LONGEST)
+ {
+ if (xp->xp_numfiles)
+ non_suf_match = xp->xp_numfiles;
+*** ../vim-7.3.464/src/vim.h 2011-07-27 17:31:42.000000000 +0200
+--- src/vim.h 2012-03-07 19:03:43.000000000 +0100
+***************
+*** 794,799 ****
+--- 794,800 ----
+ #define WILD_PREV 5
+ #define WILD_ALL 6
+ #define WILD_LONGEST 7
++ #define WILD_ALL_KEEP 8
+
+ #define WILD_LIST_NOTFOUND 1
+ #define WILD_HOME_REPLACE 2
+*** ../vim-7.3.464/src/version.c 2012-03-07 18:04:00.000000000 +0100
+--- src/version.c 2012-03-07 19:14:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 465,
+ /**/
+
+--
+Although the scythe isn't pre-eminent among the weapons of war, anyone who
+has been on the wrong end of, say, a peasants' revolt will know that in
+skilled hands it is fearsome.
+ -- (Terry Pratchett, Mort)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///