# HG changeset patch # User vimboss # Date 1187452054 0 # Node ID 151a805b2ddc219d4a968154a43daefbb2e41fe1 # Parent 7e7da11555d27f62984297f3e1debc8242baf995 updated for version 7.1-081 diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3281,32 +3281,27 @@ set_one_cmd_context(xp, buff) if (ea.argt & XFILE) { - int in_quote = FALSE; - char_u *bow = NULL; /* Beginning of word */ + int c; + int in_quote = FALSE; + char_u *bow = NULL; /* Beginning of word */ /* * Allow spaces within back-quotes to count as part of the argument * being expanded. */ xp->xp_pattern = skipwhite(arg); - for (p = xp->xp_pattern; *p; ) - { - if (*p == '\\' && p[1] != NUL) + p = xp->xp_pattern; + while (*p != NUL) + { +#ifdef FEAT_MBYTE + if (has_mbyte) + c = mb_ptr2char(p); + else +#endif + c = *p; + if (c == '\\' && p[1] != NUL) ++p; -#ifdef SPACE_IN_FILENAME - else if (vim_iswhite(*p) && (!(ea.argt & NOSPC) || usefilter)) -#else - else if (vim_iswhite(*p)) -#endif - { - p = skipwhite(p); - if (in_quote) - bow = p; - else - xp->xp_pattern = p; - --p; - } - else if (*p == '`') + else if (c == '`') { if (!in_quote) { @@ -3315,6 +3310,36 @@ set_one_cmd_context(xp, buff) } in_quote = !in_quote; } +#ifdef SPACE_IN_FILENAME + else if (!vim_isfilec(c) && (!(ea.argt & NOSPC) || usefilter)) +#else + else if (!vim_isfilec(c)) +#endif + { + while (*p != NUL) + { +#ifdef FEAT_MBYTE + if (has_mbyte) + c = mb_ptr2char(p); + else +#endif + c = *p; + if (c == '`' || vim_isfilec(c)) + break; +#ifdef FEAT_MBYTE + if (has_mbyte) + len = (*mb_ptr2len)(p); + else +#endif + len = 1; + mb_ptr_adv(p); + } + if (in_quote) + bow = p; + else + xp->xp_pattern = p; + p -= len; + } mb_ptr_adv(p); } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -667,6 +667,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 81, +/**/ 80, /**/ 79,