Patch 7.4.1820
Problem:    Removing language from help tags too often.
Solution:   Only remove @en when not needed. (Hirohito Higashi)
Files:      src/ex_getln.c, src/testdir/test_help_tagjump.vim


*** ../vim-7.4.1819/src/ex_getln.c      2016-05-05 17:18:36.963948500 +0200
--- src/ex_getln.c      2016-05-07 18:29:46.836655581 +0200
***************
*** 4519,4543 ****
        len = (int)STRLEN(file[i]) - 3;
        if (len <= 0)
            continue;
!       if (STRCMP(file[i] + len, buf) == 0)
!       {
!           /* remove the default language */
!           file[i][len] = NUL;
!       }
!       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". */
            for (j = 0; j < num_file; ++j)
!               if (j != i
!                       && (int)STRLEN(file[j]) == len + 3
!                       && STRNCMP(file[i], file[j], len + 1) == 0)
                    break;
            if (j == num_file)
                /* item only exists with @en, remove it */
                file[i][len] = NUL;
        }
      }
  }
  #endif
  
--- 4519,4550 ----
        len = (int)STRLEN(file[i]) - 3;
        if (len <= 0)
            continue;
!       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". */
            for (j = 0; j < num_file; ++j)
!               if (j != i && (int)STRLEN(file[j]) == len + 3
!                          && STRNCMP(file[i], file[j], len + 1) == 0)
                    break;
            if (j == num_file)
                /* item only exists with @en, remove it */
                file[i][len] = NUL;
        }
      }
+ 
+     if (*buf != NUL)
+       for (i = 0; i < num_file; ++i)
+       {
+           len = (int)STRLEN(file[i]) - 3;
+           if (len <= 0)
+               continue;
+           if (STRCMP(file[i] + len, buf) == 0)
+           {
+               /* remove the default language */
+               file[i][len] = NUL;
+           }
+       }
  }
  #endif
  
*** ../vim-7.4.1819/src/testdir/test_help_tagjump.vim   2016-04-14 
13:51:16.207410946 +0200
--- src/testdir/test_help_tagjump.vim   2016-05-07 18:24:26.720099414 +0200
***************
*** 26,28 ****
--- 26,143 ----
    call assert_true(getline('.') =~ '\*arglistid()\*')
    helpclose
  endfunc
+ 
+ let s:langs = ['en', 'ab', 'ja']
+ 
+ func s:doc_config_setup()
+   let s:helpfile_save = &helpfile
+   let &helpfile="Xdir1/doc-en/doc/testdoc.txt"
+   let s:rtp_save = &rtp
+   let &rtp="Xdir1/doc-en"
+   if has('multi_lang')
+     let s:helplang_save=&helplang
+   endif
+ 
+   call delete('Xdir1', 'rf')
+ 
+   for lang in s:langs
+     if lang ==# 'en'
+       let tagfname = 'tags'
+       let docfname = 'testdoc.txt'
+     else
+       let tagfname = 'tags-' . lang
+       let docfname = 'testdoc.' . lang . 'x'
+     endif
+     let docdir = "Xdir1/doc-" . lang . "/doc"
+     call mkdir(docdir, "p")
+     call writefile(["\t*test-char*", "\t*test-col*"], docdir . '/' . docfname)
+     call writefile(["test-char\t" . docfname . "\t/*test-char*",
+           \         "test-col\t" . docfname . "\t/*test-col*"],
+           \         docdir . '/' . tagfname)
+   endfor
+ endfunc
+ 
+ func s:doc_config_teardown()
+   call delete('Xdir1', 'rf')
+ 
+   let &helpfile = s:helpfile_save
+   let &rtp = s:rtp_save
+   if has('multi_lang')
+     let &helplang = s:helplang_save
+   endif
+ endfunc
+ 
+ func s:get_cmd_compl_list(cmd)
+   let list = []
+   let str = ''
+   for cnt in range(1, 999)
+     call feedkeys(a:cmd . repeat("\<Tab>", cnt) . "'\<C-B>let str='\<CR>", 
'tx')
+     if str ==# a:cmd[1:]
+       break
+     endif
+     call add(list, str)
+   endfor
+   return list
+ endfunc
+ 
+ func Test_help_complete()
+   try
+     let list = []
+     call s:doc_config_setup()
+ 
+     " 'helplang=' and help file lang is 'en'
+     if has('multi_lang')
+       set helplang=
+     endif
+     let list = s:get_cmd_compl_list(":h test")
+     call assert_equal(['h test-col', 'h test-char'], list)
+ 
+     if has('multi_lang')
+       " 'helplang=ab' and help file lang is 'en'
+       set helplang=ab
+       let list = s:get_cmd_compl_list(":h test")
+       call assert_equal(['h test-col', 'h test-char'], list)
+ 
+       " 'helplang=' and help file lang is 'en' and 'ab'
+       set rtp+=Xdir1/doc-ab
+       set helplang=
+       let list = s:get_cmd_compl_list(":h test")
+       call assert_equal(['h test-col@en', 'h test-col@ab',
+             \             'h test-char@en', 'h test-char@ab'], list)
+ 
+       " 'helplang=ab' and help file lang is 'en' and 'ab'
+       set helplang=ab
+       let list = s:get_cmd_compl_list(":h test")
+       call assert_equal(['h test-col', 'h test-col@en',
+             \             'h test-char', 'h test-char@en'], list)
+ 
+       " 'helplang=' and help file lang is 'en', 'ab' and 'ja'
+       set rtp+=Xdir1/doc-ja
+       set helplang=
+       let list = s:get_cmd_compl_list(":h test")
+       call assert_equal(['h test-col@en', 'h test-col@ab',
+             \             'h test-col@ja', 'h test-char@en',
+             \             'h test-char@ab', 'h test-char@ja'], list)
+ 
+       " 'helplang=ab' and help file lang is 'en', 'ab' and 'ja'
+       set helplang=ab
+       let list = s:get_cmd_compl_list(":h test")
+       call assert_equal(['h test-col', 'h test-col@en',
+             \             'h test-col@ja', 'h test-char',
+             \             'h test-char@en', 'h test-char@ja'], list)
+ 
+       " 'helplang=ab,ja' and help file lang is 'en', 'ab' and 'ja'
+       set helplang=ab,ja
+       let list = s:get_cmd_compl_list(":h test")
+       call assert_equal(['h test-col', 'h test-col@ja',
+             \             'h test-col@en', 'h test-char',
+             \             'h test-char@ja', 'h test-char@en'], list)
+     endif
+   catch
+     call assert_exception('X')
+   finally
+     call s:doc_config_teardown()
+   endtry
+ endfunc
+ 
+ " vim: et sw=2:
*** ../vim-7.4.1819/src/version.c       2016-05-05 18:13:59.416035302 +0200
--- src/version.c       2016-05-07 18:26:49.538539130 +0200
***************
*** 755,756 ****
--- 755,758 ----
  {   /* Add new patch number below this line */
+ /**/
+     1820,
  /**/

-- 
A year spent in artificial intelligence is enough to make one
believe in God.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui