0
0
mirror of https://github.com/vim/vim.git synced 2025-09-28 04:24:06 -04:00

patch 8.1.0235: more help tags that jump to the wrong location

Problem:    More help tags that jump to the wrong location.
Solution:   Add more exceptions and a table for "expr-" tags. (Hirohito
            Higashi)
This commit is contained in:
Bram Moolenaar
2018-08-02 22:23:57 +02:00
parent 41c363a315
commit 3bf5e6a4c8
3 changed files with 54 additions and 12 deletions

View File

@@ -6583,7 +6583,8 @@ find_help_tags(
static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*", static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
"/*", "/\\*", "\"*", "**", "/*", "/\\*", "\"*", "**",
"cpo-*", "/\\(\\)", "/\\%(\\)", "cpo-*", "/\\(\\)", "/\\%(\\)",
"?", ":?", "-?", "?<CR>", "g?", "g?g?", "g??", "?", ":?", "?<CR>", "g?", "g?g?", "g??",
"-?", "q?", "v_g?",
"/\\?", "/\\z(\\)", "\\=", ":s\\=", "/\\?", "/\\z(\\)", "\\=", ":s\\=",
"[count]", "[quotex]", "[count]", "[quotex]",
"[range]", ":[range]", "[range]", ":[range]",
@@ -6593,27 +6594,43 @@ find_help_tags(
static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star", static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star",
"/star", "/\\\\star", "quotestar", "starstar", "/star", "/\\\\star", "quotestar", "starstar",
"cpo-star", "/\\\\(\\\\)", "/\\\\%(\\\\)", "cpo-star", "/\\\\(\\\\)", "/\\\\%(\\\\)",
"?", ":?", "-?", "?<CR>", "g?", "g?g?", "g??", "?", ":?", "?<CR>", "g?", "g?g?", "g??",
"-?", "q?", "v_g?",
"/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
"\\[count]", "\\[quotex]", "\\[count]", "\\[quotex]",
"\\[range]", ":\\[range]", "\\[range]", ":\\[range]",
"\\[pattern]", "\\\\bar", "/\\\\%\\$", "\\[pattern]", "\\\\bar", "/\\\\%\\$",
"s/\\\\\\~", "s/\\\\U", "s/\\\\L", "s/\\\\\\~", "s/\\\\U", "s/\\\\L",
"s/\\\\1", "s/\\\\2", "s/\\\\3", "s/\\\\9"}; "s/\\\\1", "s/\\\\2", "s/\\\\3", "s/\\\\9"};
static char *(expr_table[]) = {"!=?", "!~?", "<=?", "<?", "==?", "=~?",
">=?", ">?", "is?", "isnot?"};
int flags; int flags;
d = IObuff; /* assume IObuff is long enough! */ d = IObuff; /* assume IObuff is long enough! */
/* if (STRNICMP(arg, "expr-", 5) == 0)
* Recognize a few exceptions to the rule. Some strings that contain '*' {
* with "star". Otherwise '*' is recognized as a wildcard. // When the string starting with "expr-" and containing '?' and matches
*/ // the table, it is taken literally. Otherwise '?' is recognized as a
for (i = (int)(sizeof(mtable) / sizeof(char *)); --i >= 0; ) // wildcard.
if (STRCMP(arg, mtable[i]) == 0) for (i = (int)(sizeof(expr_table) / sizeof(char *)); --i >= 0; )
{ if (STRCMP(arg + 5, expr_table[i]) == 0)
STRCPY(d, rtable[i]); {
break; STRCPY(d, arg);
} break;
}
}
else
{
// Recognize a few exceptions to the rule. Some strings that contain
// '*' with "star". Otherwise '*' is recognized as a wildcard.
for (i = (int)(sizeof(mtable) / sizeof(char *)); --i >= 0; )
if (STRCMP(arg, mtable[i]) == 0)
{
STRCPY(d, rtable[i]);
break;
}
}
if (i < 0) /* no match in table */ if (i < 0) /* no match in table */
{ {

View File

@@ -26,11 +26,34 @@ func Test_help_tagjump()
call assert_true(getline('.') =~ '\*:?\*') call assert_true(getline('.') =~ '\*:?\*')
helpclose helpclose
help q?
call assert_equal("help", &filetype)
call assert_true(getline('.') =~ '\*q?\*')
call assert_true(expand('<cword>') == 'q?')
helpclose
help -? help -?
call assert_equal("help", &filetype) call assert_equal("help", &filetype)
call assert_true(getline('.') =~ '\*-?\*') call assert_true(getline('.') =~ '\*-?\*')
helpclose helpclose
help v_g?
call assert_equal("help", &filetype)
call assert_true(getline('.') =~ '\*v_g?\*')
helpclose
help expr-!=?
call assert_equal("help", &filetype)
call assert_true(getline('.') =~ '\*expr-!=?\*')
call assert_true(expand('<cword>') == 'expr-!=?')
helpclose
help expr-isnot?
call assert_equal("help", &filetype)
call assert_true(getline('.') =~ '\*expr-isnot?\*')
call assert_true(expand('<cword>') == 'expr-isnot?')
helpclose
help FileW*Post help FileW*Post
call assert_equal("help", &filetype) call assert_equal("help", &filetype)
call assert_true(getline('.') =~ '\*FileWritePost\*') call assert_true(getline('.') =~ '\*FileWritePost\*')

View File

@@ -794,6 +794,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
235,
/**/ /**/
234, 234,
/**/ /**/