diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-02-13 21:19:14 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-02-13 21:19:14 +0100 |
commit | 943e9639a9ecb08bdec78ae6695c917bca6210b9 (patch) | |
tree | d00072ca8b4c753fe1fb4f2dc024591bae4dec1d /src/tag.c | |
parent | 15bbd6ec871a0efdd16256e1fccbaac0fd374cbd (diff) |
patch 8.1.0911: tag line with Ex command cannot have extra fieldsv8.1.0911
Problem: Tag line with Ex command cannot have extra fields.
Solution: Recognize |;" as the end of the command. (closes #2402)
Diffstat (limited to 'src/tag.c')
-rw-r--r-- | src/tag.c | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -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; |