diff options
author | Bram Moolenaar <Bram@vim.org> | 2012-07-25 17:22:23 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2012-07-25 17:22:23 +0200 |
commit | 848f87633a4a89311838f0d00e12282f8e2e3003 (patch) | |
tree | fed227270f564112938dd6cdcf843f9f2cdf2e14 | |
parent | 0cbba94b7e2575ba311d4eab316cc5528ffd5b67 (diff) | |
download | vim-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.c | 39 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |