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.

Raspunde prin e-mail lui