summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-10-05 11:30:09 +0200
committerBram Moolenaar <Bram@vim.org>2019-10-05 11:30:09 +0200
commit9ca250855b55f4d3292b010525c827dc6992cb61 (patch)
tree323c839cb49b0eb3bdcdc9521a01cf9d4812582f
parent4c063dde73c618b0728016d221ef130d9e9ec968 (diff)
downloadvim-git-9ca250855b55f4d3292b010525c827dc6992cb61.tar.gz
patch 8.1.2113: ":help expr-!~?" only works after searchingv8.1.2113
Problem: ":help expr-!~?" only works after searching. Solution: Escape "~" after "expr-". (closes #5015)
-rw-r--r--src/ex_cmds.c16
-rw-r--r--src/testdir/test_help.vim6
-rw-r--r--src/version.c2
3 files changed, 21 insertions, 3 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 85e5be066..da01e9dda 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5547,12 +5547,22 @@ find_help_tags(
if (STRNICMP(arg, "expr-", 5) == 0)
{
// When the string starting with "expr-" and containing '?' and matches
- // the table, it is taken literally. Otherwise '?' is recognized as a
- // wildcard.
+ // the table, it is taken literally (but ~ is escaped). Otherwise '?'
+ // is recognized as a wildcard.
for (i = (int)(sizeof(expr_table) / sizeof(char *)); --i >= 0; )
if (STRCMP(arg + 5, expr_table[i]) == 0)
{
- STRCPY(d, arg);
+ int si = 0, di = 0;
+
+ for (;;)
+ {
+ if (arg[si] == '~')
+ d[di++] = '\\';
+ d[di++] = arg[si];
+ if (arg[si] == NUL)
+ break;
+ ++si;
+ }
break;
}
}
diff --git a/src/testdir/test_help.vim b/src/testdir/test_help.vim
index c550ff09e..5dd937a93 100644
--- a/src/testdir/test_help.vim
+++ b/src/testdir/test_help.vim
@@ -20,6 +20,12 @@ func Test_help_errors()
bwipe!
endfunc
+func Test_help_expr()
+ help expr-!~?
+ call assert_equal('eval.txt', expand('%:t'))
+ close
+endfunc
+
func Test_help_keyword()
new
set keywordprg=:help
diff --git a/src/version.c b/src/version.c
index eb1ad1fc2..d37ee657d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2113,
+/**/
2112,
/**/
2111,