From 943e9639a9ecb08bdec78ae6695c917bca6210b9 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 13 Feb 2019 21:19:14 +0100 Subject: patch 8.1.0911: tag line with Ex command cannot have extra fields Problem: Tag line with Ex command cannot have extra fields. Solution: Recognize |;" as the end of the command. (closes #2402) --- src/tag.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/tag.c') diff --git a/src/tag.c b/src/tag.c index b1915e1e14..a148fbc0e9 100644 --- a/src/tag.c +++ b/src/tag.c @@ -3014,7 +3014,10 @@ parse_match( p = tagp->command; if (find_extra(&p) == OK) { - tagp->command_end = p; + 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,7 +3787,7 @@ find_extra(char_u **pp) { char_u *str = *pp; - /* Repeat for addresses separated with ';' */ + // Repeat for addresses separated with ';' for (;;) { if (VIM_ISDIGIT(*str)) @@ -3798,7 +3801,16 @@ find_extra(char_u **pp) ++str; } else - str = NULL; + { + // 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; -- cgit v1.2.3