mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 8.0.0116
Problem: When reading English help and using CTRl-] the language from 'helplang' is used. Solution: Make help tag jumps keep the language. (Tatsuki, test by Hirohito Higashi, closes #1249)
This commit is contained in:
17
src/tag.c
17
src/tag.c
@@ -1356,6 +1356,7 @@ find_tags(
|
|||||||
char_u *help_lang_find = NULL; /* lang to be found */
|
char_u *help_lang_find = NULL; /* lang to be found */
|
||||||
char_u help_lang[3]; /* lang of current tags file */
|
char_u help_lang[3]; /* lang of current tags file */
|
||||||
char_u *saved_pat = NULL; /* copy of pat[] */
|
char_u *saved_pat = NULL; /* copy of pat[] */
|
||||||
|
int is_txt = FALSE; /* flag of file extension */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pat_T orgpat; /* holds unconverted pattern info */
|
pat_T orgpat; /* holds unconverted pattern info */
|
||||||
@@ -1476,6 +1477,15 @@ find_tags(
|
|||||||
* When the tag file is case-fold sorted, it is either one or the other.
|
* When the tag file is case-fold sorted, it is either one or the other.
|
||||||
* Only ignore case when TAG_NOIC not used or 'ignorecase' set.
|
* Only ignore case when TAG_NOIC not used or 'ignorecase' set.
|
||||||
*/
|
*/
|
||||||
|
#ifdef FEAT_MULTI_LANG
|
||||||
|
/* Set a flag if the file extension is .txt */
|
||||||
|
if ((flags & TAG_KEEP_LANG)
|
||||||
|
&& help_lang_find == NULL
|
||||||
|
&& curbuf->b_fname != NULL
|
||||||
|
&& (i = (int)STRLEN(curbuf->b_fname)) > 4
|
||||||
|
&& STRICMP(curbuf->b_fname + i - 4, ".txt") == 0)
|
||||||
|
is_txt = TRUE;
|
||||||
|
#endif
|
||||||
#ifdef FEAT_TAG_BINS
|
#ifdef FEAT_TAG_BINS
|
||||||
orgpat.regmatch.rm_ic = ((p_ic || !noic)
|
orgpat.regmatch.rm_ic = ((p_ic || !noic)
|
||||||
&& (findall || orgpat.headlen == 0 || !p_tbs));
|
&& (findall || orgpat.headlen == 0 || !p_tbs));
|
||||||
@@ -1508,6 +1518,11 @@ find_tags(
|
|||||||
{
|
{
|
||||||
#ifdef FEAT_MULTI_LANG
|
#ifdef FEAT_MULTI_LANG
|
||||||
if (curbuf->b_help)
|
if (curbuf->b_help)
|
||||||
|
{
|
||||||
|
/* Keep en if the file extension is .txt*/
|
||||||
|
if (is_txt)
|
||||||
|
STRCPY(help_lang, "en");
|
||||||
|
else
|
||||||
{
|
{
|
||||||
/* Prefer help tags according to 'helplang'. Put the
|
/* Prefer help tags according to 'helplang'. Put the
|
||||||
* two-letter language name in help_lang[]. */
|
* two-letter language name in help_lang[]. */
|
||||||
@@ -1516,7 +1531,7 @@ find_tags(
|
|||||||
STRCPY(help_lang, tag_fname + i - 2);
|
STRCPY(help_lang, tag_fname + i - 2);
|
||||||
else
|
else
|
||||||
STRCPY(help_lang, "en");
|
STRCPY(help_lang, "en");
|
||||||
|
}
|
||||||
/* When searching for a specific language skip tags files
|
/* When searching for a specific language skip tags files
|
||||||
* for other languages. */
|
* for other languages. */
|
||||||
if (help_lang_find != NULL
|
if (help_lang_find != NULL
|
||||||
|
@@ -141,4 +141,36 @@ func Test_help_complete()
|
|||||||
endtry
|
endtry
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_help_respect_current_file_lang()
|
||||||
|
try
|
||||||
|
let list = []
|
||||||
|
call s:doc_config_setup()
|
||||||
|
|
||||||
|
if has('multi_lang')
|
||||||
|
function s:check_help_file_ext(help_keyword, ext)
|
||||||
|
exec 'help ' . a:help_keyword
|
||||||
|
call assert_equal(a:ext, expand('%:e'))
|
||||||
|
call feedkeys("\<C-]>", 'tx')
|
||||||
|
call assert_equal(a:ext, expand('%:e'))
|
||||||
|
pop
|
||||||
|
helpclose
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
set rtp+=Xdir1/doc-ab
|
||||||
|
set rtp+=Xdir1/doc-ja
|
||||||
|
|
||||||
|
set helplang=ab
|
||||||
|
call s:check_help_file_ext('test-char', 'abx')
|
||||||
|
call s:check_help_file_ext('test-char@ja', 'jax')
|
||||||
|
set helplang=ab,ja
|
||||||
|
call s:check_help_file_ext('test-char@ja', 'jax')
|
||||||
|
call s:check_help_file_ext('test-char@en', 'txt')
|
||||||
|
endif
|
||||||
|
catch
|
||||||
|
call assert_exception('X')
|
||||||
|
finally
|
||||||
|
call s:doc_config_teardown()
|
||||||
|
endtry
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
116,
|
||||||
/**/
|
/**/
|
||||||
115,
|
115,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user