summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2012-07-25 17:22:23 +0200
committerBram Moolenaar <Bram@vim.org>2012-07-25 17:22:23 +0200
commit848f87633a4a89311838f0d00e12282f8e2e3003 (patch)
treefed227270f564112938dd6cdcf843f9f2cdf2e14
parent0cbba94b7e2575ba311d4eab316cc5528ffd5b67 (diff)
downloadvim-848f87633a4a89311838f0d00e12282f8e2e3003.zip
updated for version 7.3.615
Problem: Completion for a user command does not recognize backslash before a space. Solution: Recognize escaped characters. (Yasuhiro Matsumoto)
-rw-r--r--src/ex_docmd.c39
-rw-r--r--src/version.c2
2 files changed, 34 insertions, 7 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 7be802c9d..e975d84ae 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3390,12 +3390,23 @@ set_one_cmd_context(xp, buff)
return NULL;
/* Find start of last argument (argument just before cursor): */
- p = buff + STRLEN(buff);
- while (p != arg && *p != ' ' && *p != TAB)
- p--;
- if (*p == ' ' || *p == TAB)
- p++;
+ p = buff;
xp->xp_pattern = p;
+ len = STRLEN(buff);
+ while (*p && p < buff + len)
+ {
+ if (*p == ' ' || *p == TAB)
+ {
+ /* argument starts after a space */
+ xp->xp_pattern = ++p;
+ }
+ else
+ {
+ if (*p == '\\' && *(p + 1) != NUL)
+ ++p; /* skip over escaped character */
+ mb_ptr_adv(p);
+ }
+ }
if (ea.argt & XFILE)
{
@@ -3821,8 +3832,22 @@ set_one_cmd_context(xp, buff)
if (compl == EXPAND_MAPPINGS)
return set_context_in_map_cmd(xp, (char_u *)"map",
arg, forceit, FALSE, FALSE, CMD_map);
- while ((xp->xp_pattern = vim_strchr(arg, ' ')) != NULL)
- arg = xp->xp_pattern + 1;
+ /* Find start of last argument. */
+ p = arg;
+ while (*p)
+ {
+ if (*p == ' ')
+ {
+ /* argument starts after a space */
+ arg = p + 1;
+ }
+ else
+ {
+ if (*p == '\\' && *(p + 1) != NUL)
+ ++p; /* skip over escaped character */
+ mb_ptr_adv(p);
+ }
+ }
xp->xp_pattern = arg;
}
xp->xp_context = compl;
diff --git a/src/version.c b/src/version.c
index 3a662a2a8..eecc4d851 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 615,
+/**/
614,
/**/
613,