changeset 8765:3daf70d22168 v7.4.1671

commit https://github.com/vim/vim/commit/61264d99692803eec76a171916ab9720c75536b0 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Mar 28 19:59:02 2016 +0200 patch 7.4.1671 Problem: When help exists in multiple languages, adding @ab while "ab" is the default help language is unnecessary. Solution: Leave out "@ab" when not needed. (Ken Takata)
author Christian Brabandt <cb@256bit.org>
date Mon, 28 Mar 2016 20:00:10 +0200
parents 8740fe78876f
children 64587e27c473
files src/ex_getln.c src/version.c
diffstat 2 files changed, 26 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4491,7 +4491,9 @@ expand_cmdline(
 
 #ifdef FEAT_MULTI_LANG
 /*
- * Cleanup matches for help tags: remove "@en" if "en" is the only language.
+ * Cleanup matches for help tags:
+ * Remove "@ab" if the top of 'helplang' is "ab" and the language of the first
+ * tag matches it.  Otherwise remove "@en" if "en" is the only language.
  */
 static void	cleanup_help_tags(int num_file, char_u **file);
 
@@ -4500,11 +4502,28 @@ cleanup_help_tags(int num_file, char_u *
 {
     int		i, j;
     int		len;
+    char_u	buf[4];
+    char_u	*p = buf;
+
+    if (p_hlg[0] != NUL)
+    {
+	*p++ = '@';
+	*p++ = p_hlg[0];
+	*p++ = p_hlg[1];
+    }
+    *p = NUL;
 
     for (i = 0; i < num_file; ++i)
     {
 	len = (int)STRLEN(file[i]) - 3;
-	if (len > 0 && STRCMP(file[i] + len, "@en") == 0)
+	if (len <= 0)
+	    continue;
+	if (i == 0 && STRCMP(file[i] + len, buf) == 0)
+	{
+	    file[i][len] = NUL;
+	    break;
+	}
+	else if (STRCMP(file[i] + len, "@en") == 0)
 	{
 	    /* Sorting on priority means the same item in another language may
 	     * be anywhere.  Search all items for a match up to the "@en". */
@@ -4514,7 +4533,10 @@ cleanup_help_tags(int num_file, char_u *
 			&& STRNCMP(file[i], file[j], len + 1) == 0)
 		    break;
 	    if (j == num_file)
+	    {
 		file[i][len] = NUL;
+		break;
+	    }
 	}
     }
 }
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1671,
+/**/
     1670,
 /**/
     1669,