To: vim_dev@googlegroups.com Subject: Patch 7.4.1820 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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("\", cnt) . "'\let str='\", '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 -- Bram@Moolenaar.net -- 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 ///