# HG changeset patch # User Christian Brabandt # Date 1459188010 -7200 # Node ID 3daf70d221688ad2dd85e56ef6aabe025b3215da # Parent 8740fe78876f55d906031120138f7d0910f9aef6 commit https://github.com/vim/vim/commit/61264d99692803eec76a171916ab9720c75536b0 Author: Bram Moolenaar 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) diff --git a/src/ex_getln.c b/src/ex_getln.c --- 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; + } } } } diff --git a/src/version.c b/src/version.c --- 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,