Patch 8.1.0911
Problem: Tag line with Ex command cannot have extra fields.
Solution: Recognize |;" as the end of the command. (closes #2402)
Files: runtime/doc/tagsrch.txt, src/tag.c, src/testdir/test_taglist.vim
*** ../vim-8.1.0910/runtime/doc/tagsrch.txt 2018-11-11 15:20:32.432704446
+0100
--- runtime/doc/tagsrch.txt 2019-02-13 21:17:47.448568824 +0100
***************
*** 571,577 ****
{term} ;" The two characters semicolon and double quote. This
is
interpreted by Vi as the start of a comment, which makes the
following be ignored. This is for backwards compatibility
! with Vi, it ignores the following fields.
{field} .. A list of optional fields. Each field has the form:
<Tab>{fieldname}:{value}
--- 571,584 ----
{term} ;" The two characters semicolon and double quote. This
is
interpreted by Vi as the start of a comment, which makes the
following be ignored. This is for backwards compatibility
! with Vi, it ignores the following fields. Example:
! APP file /^static int APP;$/;" v
! When {tagaddress} is not a line number or search pattern, then
! {term} must be |;". Here the bar ends the command (excluding
! the bar) and ;" is used to have Vi ignore the rest of the
! line. Example:
! APP file.c call cursor(3, 4)|;" v
!
{field} .. A list of optional fields. Each field has the form:
<Tab>{fieldname}:{value}
*** ../vim-8.1.0910/src/tag.c 2019-01-26 17:28:22.236599060 +0100
--- src/tag.c 2019-02-13 21:14:30.233964187 +0100
***************
*** 3014,3020 ****
p = tagp->command;
if (find_extra(&p) == OK)
{
! tagp->command_end = p;
p += 2; /* skip ";\"" */
if (*p++ == TAB)
while (ASCII_ISALPHA(*p))
--- 3014,3023 ----
p = tagp->command;
if (find_extra(&p) == OK)
{
! if (p > tagp->command && p[-1] == '|')
! tagp->command_end = p - 1; // drop trailing bar
! else
! tagp->command_end = p;
p += 2; /* skip ";\"" */
if (*p++ == TAB)
while (ASCII_ISALPHA(*p))
***************
*** 3784,3790 ****
{
char_u *str = *pp;
! /* Repeat for addresses separated with ';' */
for (;;)
{
if (VIM_ISDIGIT(*str))
--- 3787,3793 ----
{
char_u *str = *pp;
! // Repeat for addresses separated with ';'
for (;;)
{
if (VIM_ISDIGIT(*str))
***************
*** 3798,3804 ****
++str;
}
else
! str = NULL;
if (str == NULL || *str != ';'
|| !(VIM_ISDIGIT(str[1]) || str[1] == '/' || str[1] == '?'))
break;
--- 3801,3816 ----
++str;
}
else
! {
! // not a line number or search string, look for terminator.
! str = (char_u *)strstr((char *)str, "|;\"");
! if (str != NULL)
! {
! ++str;
! break;
! }
!
! }
if (str == NULL || *str != ';'
|| !(VIM_ISDIGIT(str[1]) || str[1] == '/' || str[1] == '?'))
break;
*** ../vim-8.1.0910/src/testdir/test_taglist.vim 2018-06-30
22:40:39.097551835 +0200
--- src/testdir/test_taglist.vim 2019-02-13 21:14:47.965836948 +0100
***************
*** 5,11 ****
\ "FFoo\tXfoo\t1",
\ "FBar\tXfoo\t2",
\ "BFoo\tXbar\t1",
! \ "BBar\tXbar\t2"
\ ], 'Xtags')
set tags=Xtags
split Xtext
--- 5,13 ----
\ "FFoo\tXfoo\t1",
\ "FBar\tXfoo\t2",
\ "BFoo\tXbar\t1",
! \ "BBar\tXbar\t2",
! \ "Kindly\tXbar\t3;\"\tv\tfile:",
! \ "Command\tXbar\tcall cursor(3, 4)|;\"\td",
\ ], 'Xtags')
set tags=Xtags
split Xtext
***************
*** 15,20 ****
--- 17,34 ----
call assert_equal(['FFoo', 'BFoo'], map(taglist("Foo", "Xfoo"), {i, v ->
v.name}))
call assert_equal(['BFoo', 'FFoo'], map(taglist("Foo", "Xbar"), {i, v ->
v.name}))
+ let kind = taglist("Kindly")
+ call assert_equal(1, len(kind))
+ call assert_equal('v', kind[0]['kind'])
+ call assert_equal('3', kind[0]['cmd'])
+ call assert_equal(1, kind[0]['static'])
+ call assert_equal('Xbar', kind[0]['filename'])
+
+ let cmd = taglist("Command")
+ call assert_equal(1, len(cmd))
+ call assert_equal('d', cmd[0]['kind'])
+ call assert_equal('call cursor(3, 4)', cmd[0]['cmd'])
+
call delete('Xtags')
bwipe
endfunc
*** ../vim-8.1.0910/src/version.c 2019-02-13 20:31:46.883018311 +0100
--- src/version.c 2019-02-13 21:18:24.092313726 +0100
***************
*** 785,786 ****
--- 785,788 ----
{ /* Add new patch number below this line */
+ /**/
+ 911,
/**/
--
SOLDIER: What? A swallow carrying a coconut?
ARTHUR: It could grip it by the husk ...
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// 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.