# HG changeset patch # User Bram Moolenaar # Date 1434725143 -7200 # Node ID b782813c73a61e98d881b481af7fb671585e404b # Parent d4aff9ec0c35cd6eebe51ff99e2b3d023fc89256 patch 7.4.746 Problem: ":[count]tag" is not always working. (cs86661) Solution: Set cur_match a bit later. (Hirohito Higashi) diff --git a/src/tag.c b/src/tag.c --- a/src/tag.c +++ b/src/tag.c @@ -508,14 +508,7 @@ do_tag(tag, type, count, forceit, verbos tagmatchname = vim_strsave(name); } - /* - * If a count is supplied to the ":tag " command, then - * jump to count'th matching tag. - */ - if (type == DT_TAG && *tag != NUL && count > 0) - cur_match = count - 1; - - if (type == DT_SELECT || type == DT_JUMP + if (type == DT_TAG || type == DT_SELECT || type == DT_JUMP #if defined(FEAT_QUICKFIX) || type == DT_LTAG #endif @@ -594,7 +587,13 @@ do_tag(tag, type, count, forceit, verbos } else #endif - if (type == DT_SELECT || (type == DT_JUMP && num_matches > 1)) + if (type == DT_TAG) + /* + * If a count is supplied to the ":tag " command, then + * jump to count'th matching tag. + */ + cur_match = count > 0 ? count - 1 : 0; + else if (type == DT_SELECT || (type == DT_JUMP && num_matches > 1)) { /* * List all the matching tags. @@ -990,7 +989,7 @@ do_tag(tag, type, count, forceit, verbos ic = (matches[cur_match][0] & MT_IC_OFF); - if (type != DT_SELECT && type != DT_JUMP + if (type != DT_TAG && type != DT_SELECT && type != DT_JUMP #ifdef FEAT_CSCOPE && type != DT_CSCOPE #endif diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 746, +/**/ 745, /**/ 744,