# HG changeset patch # User Bram Moolenaar # Date 1641214804 -3600 # Node ID e3f3108a780a8b1567bb70ebcff70bc56e430260 # Parent 115ef4cd44b94cd2f9a6cfcbc33e8674f0d25fcd patch 8.2.3992: wrong local-additions in the help with language mix Commit: https://github.com/vim/vim/commit/0e2508d9e63e63414de2c06b3c8a446fdfe4470b Author: h-east Date: Mon Jan 3 12:53:24 2022 +0000 patch 8.2.3992: wrong local-additions in the help with language mix Problem: Wrong local-additions in the help with language mix. Solution: Adjust how the local additions list is generated. (Hirohito Higashi, closes #9464) diff --git a/src/help.c b/src/help.c --- a/src/help.c +++ b/src/help.c @@ -818,32 +818,31 @@ fix_help_buffer(void) // the same directory. for (i1 = 0; i1 < fcount; ++i1) { - for (i2 = 0; i2 < fcount; ++i2) + f1 = fnames[i1]; + t1 = gettail(f1); + e1 = vim_strrchr(t1, '.'); + if (fnamecmp(e1, ".txt") != 0 + && fnamecmp(e1, fname + 4) != 0) { - if (i1 == i2) - continue; - if (fnames[i1] == NULL || fnames[i2] == NULL) + // Not .txt and not .abx, remove it. + VIM_CLEAR(fnames[i1]); + continue; + } + + for (i2 = i1 + 1; i2 < fcount; ++i2) + { + f2 = fnames[i2]; + if (f2 == NULL) continue; - f1 = fnames[i1]; - f2 = fnames[i2]; - t1 = gettail(f1); t2 = gettail(f2); - e1 = vim_strrchr(t1, '.'); e2 = vim_strrchr(t2, '.'); if (e1 == NULL || e2 == NULL) continue; - if (fnamecmp(e1, ".txt") != 0 - && fnamecmp(e1, fname + 4) != 0) - { - // Not .txt and not .abx, remove it. - VIM_CLEAR(fnames[i1]); - continue; - } if (e1 - f1 != e2 - f2 || fnamencmp(f1, f2, e1 - f1) != 0) continue; if (fnamecmp(e1, ".txt") == 0 - && fnamecmp(e2, fname + 4) == 0) + && fnamecmp(e2, fname + 4) == 0) // use .abx instead of .txt VIM_CLEAR(fnames[i1]); } diff --git a/src/testdir/test_help.vim b/src/testdir/test_help.vim --- a/src/testdir/test_help.vim +++ b/src/testdir/test_help.vim @@ -57,16 +57,42 @@ func Test_help_local_additions() call writefile(['*mydoc-ext.txt* my extended awesome doc'], 'Xruntime/doc/mydoc-ext.txt') let rtp_save = &rtp set rtp+=./Xruntime - help - 1 - call search('mydoc.txt') - call assert_equal('|mydoc.txt| my awesome doc', getline('.')) - 1 - call search('mydoc-ext.txt') - call assert_equal('|mydoc-ext.txt| my extended awesome doc', getline('.')) + help local-additions + let lines = getline(line(".") + 1, search("^$") - 1) + call assert_equal([ + \ '|mydoc-ext.txt| my extended awesome doc', + \ '|mydoc.txt| my awesome doc' + \ ], lines) + call delete('Xruntime/doc/mydoc-ext.txt') + close + + call mkdir('Xruntime-ja/doc', 'p') + call writefile(["local-additions\thelp.jax\t/*local-additions*"], 'Xruntime-ja/doc/tags-ja') + call writefile(['*help.txt* This is jax file', '', + \ 'LOCAL ADDITIONS: *local-additions*', ''], 'Xruntime-ja/doc/help.jax') + call writefile(['*work.txt* This is jax file'], 'Xruntime-ja/doc/work.jax') + call writefile(['*work2.txt* This is jax file'], 'Xruntime-ja/doc/work2.jax') + set rtp+=./Xruntime-ja + + help local-additions@en + let lines = getline(line(".") + 1, search("^$") - 1) + call assert_equal([ + \ '|mydoc.txt| my awesome doc' + \ ], lines) + close + + help local-additions@ja + let lines = getline(line(".") + 1, search("^$") - 1) + call assert_equal([ + \ '|mydoc.txt| my awesome doc', + \ '|help.txt| This is jax file', + \ '|work.txt| This is jax file', + \ '|work2.txt| This is jax file', + \ ], lines) close call delete('Xruntime', 'rf') + call delete('Xruntime-ja', 'rf') let &rtp = rtp_save endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3992, +/**/ 3991, /**/ 3990,