| To: vim-dev@vim.org |
| Subject: patch 7.1.081 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=ISO-8859-1 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.1.081 |
| Problem: Command line completion for a shell command: "cat </tmp/file<Tab>" |
| doesn't work. |
| Solution: Start the file name at any character that can't be in a file name. |
| (Martin Toft) |
| Files: src/ex_docmd.c |
| |
| |
| |
| |
| |
| *** 3281,3319 **** |
| |
| if (ea.argt & XFILE) |
| { |
| ! 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; |
| #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 == '`') |
| ! { |
| ! if (!in_quote) |
| ! { |
| ! xp->xp_pattern = p; |
| ! bow = p + 1; |
| ! } |
| ! in_quote = !in_quote; |
| } |
| mb_ptr_adv(p); |
| } |
| --- 3281,3344 ---- |
| |
| if (ea.argt & XFILE) |
| { |
| ! 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); |
| ! 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; |
| + else if (c == '`') |
| + { |
| + if (!in_quote) |
| + { |
| + xp->xp_pattern = p; |
| + bow = p + 1; |
| + } |
| + 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); |
| } |
| |
| |
| |
| *** 668,669 **** |
| --- 668,671 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 81, |
| /**/ |
| |
| -- |
| hundred-and-one symptoms of being an internet addict: |
| 194. Your business cards contain your e-mail and home page address. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ download, build and distribute -- http://www.A-A-P.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |