Patch 8.1.0235 (after 8.1.0231)
Problem: More help tags that jump to the wrong location.
Solution: Add more exceptions and a table for "expr-" tags. (Hirohito
Higashi)
Files: src/ex_cmds.c, src/testdir/test_help_tagjump.vim
*** ../vim-8.1.0234/src/ex_cmds.c 2018-08-01 18:02:57.493860532 +0200
--- src/ex_cmds.c 2018-08-02 22:21:56.015278660 +0200
***************
*** 6583,6589 ****
static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
"/*", "/\\*", "\"*", "**",
"cpo-*", "/\\(\\)", "/\\%(\\)",
! "?", ":?", "-?", "?<CR>", "g?", "g?g?", "g??",
"/\\?", "/\\z(\\)", "\\=", ":s\\=",
"[count]", "[quotex]",
"[range]", ":[range]",
--- 6583,6590 ----
static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
"/*", "/\\*", "\"*", "**",
"cpo-*", "/\\(\\)", "/\\%(\\)",
! "?", ":?", "?<CR>", "g?", "g?g?", "g??",
! "-?", "q?", "v_g?",
"/\\?", "/\\z(\\)", "\\=", ":s\\=",
"[count]", "[quotex]",
"[range]", ":[range]",
***************
*** 6593,6619 ****
static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star",
"/star", "/\\\\star", "quotestar", "starstar",
"cpo-star", "/\\\\(\\\\)", "/\\\\%(\\\\)",
! "?", ":?", "-?", "?<CR>", "g?", "g?g?", "g??",
"/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
"\\[count]", "\\[quotex]",
"\\[range]", ":\\[range]",
"\\[pattern]", "\\\\bar", "/\\\\%\\$",
"s/\\\\\\~", "s/\\\\U", "s/\\\\L",
"s/\\\\1", "s/\\\\2", "s/\\\\3", "s/\\\\9"};
int flags;
d = IObuff; /* assume IObuff is long enough! */
! /*
! * 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 */
{
--- 6594,6636 ----
static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star",
"/star", "/\\\\star", "quotestar", "starstar",
"cpo-star", "/\\\\(\\\\)", "/\\\\%(\\\\)",
! "?", ":?", "?<CR>", "g?", "g?g?", "g??",
! "-?", "q?", "v_g?",
"/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
"\\[count]", "\\[quotex]",
"\\[range]", ":\\[range]",
"\\[pattern]", "\\\\bar", "/\\\\%\\$",
"s/\\\\\\~", "s/\\\\U", "s/\\\\L",
"s/\\\\1", "s/\\\\2", "s/\\\\3", "s/\\\\9"};
+ static char *(expr_table[]) = {"!=?", "!~?", "<=?", "<?", "==?", "=~?",
+ ">=?", ">?", "is?", "isnot?"};
int flags;
d = IObuff; /* assume IObuff is long enough! */
! 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.
! for (i = (int)(sizeof(expr_table) / sizeof(char *)); --i >= 0; )
! if (STRCMP(arg + 5, expr_table[i]) == 0)
! {
! 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 */
{
*** ../vim-8.1.0234/src/testdir/test_help_tagjump.vim 2018-08-01
18:02:57.493860532 +0200
--- src/testdir/test_help_tagjump.vim 2018-08-02 22:16:50.581068403 +0200
***************
*** 26,36 ****
--- 26,59 ----
call assert_true(getline('.') =~ '\*:?\*')
helpclose
+ help q?
+ call assert_equal("help", &filetype)
+ call assert_true(getline('.') =~ '\*q?\*')
+ call assert_true(expand('<cword>') == 'q?')
+ helpclose
+
help -?
call assert_equal("help", &filetype)
call assert_true(getline('.') =~ '\*-?\*')
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
call assert_equal("help", &filetype)
call assert_true(getline('.') =~ '\*FileWritePost\*')
*** ../vim-8.1.0234/src/version.c 2018-08-02 21:46:47.579548771 +0200
--- src/version.c 2018-08-02 22:18:16.740563501 +0200
***************
*** 796,797 ****
--- 796,799 ----
{ /* Add new patch number below this line */
+ /**/
+ 235,
/**/
--
ARTHUR: Be quiet!
DENNIS: Well you can't expect to wield supreme executive power just 'cause
some watery tart threw a sword at you!
ARTHUR: Shut up!
DENNIS: I mean, if I went around sayin' I was an empereror just because some
moistened bint had lobbed a scimitar at me they'd put me away!
The Quest for the Holy Grail (Monty Python)
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.