]> granicus.if.org Git - vim/commitdiff
patch 8.2.3992: wrong local-additions in the help with language mix v8.2.3992
authorh-east <h.east.727@gmail.com>
Mon, 3 Jan 2022 12:53:24 +0000 (12:53 +0000)
committerBram Moolenaar <Bram@vim.org>
Mon, 3 Jan 2022 12:53:24 +0000 (12:53 +0000)
Problem:    Wrong local-additions in the help with language mix.
Solution:   Adjust how the local additions list is generated. (Hirohito
            Higashi, closes #9464)

src/help.c
src/testdir/test_help.vim
src/version.c

index 77b22056aa9a559afad21cf5bb47beebdd34fe3d..a36b671ec9a2fe6c5d828d08c54857e3643fa8e7 100644 (file)
@@ -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)
+                           {
+                               // Not .txt and not .abx, remove it.
+                               VIM_CLEAR(fnames[i1]);
+                               continue;
+                           }
+
+                           for (i2 = i1 + 1; i2 < fcount; ++i2)
                            {
-                               if (i1 == i2)
-                                   continue;
-                               if (fnames[i1] == NULL || fnames[i2] == NULL)
-                                   continue;
-                               f1 = fnames[i1];
                                f2 = fnames[i2];
-                               t1 = gettail(f1);
+                               if (f2 == NULL)
+                                   continue;
                                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]);
                            }
index 6e32edd368e59af6aaee5e52b05d6570c85c35d2..3e358d6bbbf90baff28d31820e4166b61721b56e 100644 (file)
@@ -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
 
index 96864ef31363d31f5d59cbd89fe0b34b6b631ad0..7ec033cf641af5c0c132dabe75b822bd52a69cc2 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3992,
 /**/
     3991,
 /**/