From: Bram Moolenaar <Bram@vim.org>
Date: Fri, 19 Jun 2015 14:45:43 +0000 (+0200)
Subject: patch 7.4.746
X-Git-Tag: v7.4.746
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=01cf376da1726862afc8fa1d84cf5a773909fd0d;p=vim

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
index ba42f158c..8aaa86b96 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -508,14 +508,7 @@ do_tag(tag, type, count, forceit, verbose)
 		tagmatchname = vim_strsave(name);
 	    }
 
-	    /*
-	     * If a count is supplied to the ":tag <name>" 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, verbose)
 	    }
 	    else
 #endif
-	    if (type == DT_SELECT || (type == DT_JUMP && num_matches > 1))
+	    if (type == DT_TAG)
+		/*
+		 * If a count is supplied to the ":tag <name>" 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, verbose)
 
 
 	    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
index b5e885546..ed4420341 100644
--- a/src/version.c
+++ b/src/version.c
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    746,
 /**/
     745,
 /**/