diff --git a/7.0.214 b/7.0.214 new file mode 100644 index 0000000..21fb804 --- /dev/null +++ b/7.0.214 @@ -0,0 +1,142 @@ +# KH: Modified for runtime update +To: vim-dev@vim.org +Subject: patch 7.0.214 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.214 +Problem: When using in a user command it's not possible to have an + argument end in '\ '. +Solution: Change the handling of backslashes. (Yakov Lerner) +Files: runtime/doc/map.txt, src/ex_docmd.c + + +--- vim70/runtime/doc/map.txt.214 2006-09-08 23:26:31.000000000 +0200 ++++ runtime/doc/map.txt 2007-03-30 11:54:36.000000000 +0200 +@@ -1,4 +1,4 @@ +-*map.txt* For Vim version 7.0. Last change: 2006 Sep 05 ++*map.txt* For Vim version 7.0. Last change: 2007 Mar 08 + + + VIM REFERENCE MANUAL by Bram Moolenaar +@@ -1312,6 +1312,22 @@ + arguments at spaces and Tabs, quotes each argument individually, and the + sequence is replaced by the comma-separated list of quoted arguments. + See the Mycmd example below. If no arguments are given is removed. ++ To embed whitespace into an argument of , prepend a backslash. ++ replaces every pair of backslashes (\\) with one backslash. A ++ backslash followed by a character other than white space or a backslash ++ remains unmodified. Overview: ++ ++ command ~ ++ XX ab 'ab' ++ XX a\b 'a\b' ++ XX a\ b 'a b' ++ XX a\ b 'a ', 'b' ++ XX a\\b 'a\b' ++ XX a\\ b 'a\', 'b' ++ XX a\\\b 'a\\b' ++ XX a\\\ b 'a\ b' ++ XX a\\\\b 'a\\b' ++ XX a\\\\ b 'a\\', 'b' + + Examples > + +*** ../vim-7.0.213/src/ex_docmd.c Tue Nov 28 21:41:19 2006 +--- src/ex_docmd.c Thu Mar 8 17:49:11 2007 +*************** +*** 5551,5556 **** +--- 5551,5559 ---- + mch_memmove(cmd, cmd + 1, (gap->ga_len - i) * sizeof(ucmd_T)); + } + ++ /* ++ * split and quote args for ++ */ + static char_u * + uc_split_args(arg, lenp) + char_u *arg; +*************** +*** 5567,5573 **** + + while (*p) + { +! if (p[0] == '\\' && vim_iswhite(p[1])) + { + len += 1; + p += 2; +--- 5570,5581 ---- + + while (*p) + { +! if (p[0] == '\\' && p[1] == '\\') +! { +! len += 2; +! p += 2; +! } +! else if (p[0] == '\\' && vim_iswhite(p[1])) + { + len += 1; + p += 2; +*************** +*** 5603,5609 **** + *q++ = '"'; + while (*p) + { +! if (p[0] == '\\' && vim_iswhite(p[1])) + { + *q++ = p[1]; + p += 2; +--- 5611,5623 ---- + *q++ = '"'; + while (*p) + { +! if (p[0] == '\\' && p[1] == '\\') +! { +! *q++ = '\\'; +! *q++ = '\\'; +! p += 2; +! } +! else if (p[0] == '\\' && vim_iswhite(p[1])) + { + *q++ = p[1]; + p += 2; +*************** +*** 5735,5741 **** + } + + break; +! case 2: /* Quote and split */ + /* This is hard, so only do it once, and cache the result */ + if (*split_buf == NULL) + *split_buf = uc_split_args(eap->arg, split_len); +--- 5749,5755 ---- + } + + break; +! case 2: /* Quote and split () */ + /* This is hard, so only do it once, and cache the result */ + if (*split_buf == NULL) + *split_buf = uc_split_args(eap->arg, split_len); +*** ../vim-7.0.213/src/version.c Thu Mar 8 14:54:52 2007 +--- src/version.c Thu Mar 8 18:11:47 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 214, + /**/ + +-- +Microsoft's definition of a boolean: TRUE, FALSE, MAYBE +"Embrace and extend"...? + + /// 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 ///