changeset 6851:b782813c73a6 v7.4.746

patch 7.4.746 Problem: ":[count]tag" is not always working. (cs86661) Solution: Set cur_match a bit later. (Hirohito Higashi)
author Bram Moolenaar <bram@vim.org>
date Fri, 19 Jun 2015 16:45:43 +0200
parents d4aff9ec0c35
children f538da3ee271
files src/tag.c src/version.c
diffstat 2 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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 <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, 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 <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, 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
--- 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,