From: Bram Moolenaar Date: Mon, 28 Mar 2016 17:59:02 +0000 (+0200) Subject: patch 7.4.1671 X-Git-Tag: v7.4.1671 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=61264d99692803eec76a171916ab9720c75536b0;p=vim 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 index 740c4b6cf..11824907e 100644 --- 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 **file) { 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 **file) && 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 index 7039002fc..a26efec39 100644 --- a/src/version.c +++ b/src/version.c @@ -748,6 +748,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1671, /**/ 1670, /**/