mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #5357 from jbradaric/vim-7.4.1671
vim-patch:7.4.{1671,1818,1820,1821}
This commit is contained in:
commit
45d5b78aec
@ -2548,10 +2548,9 @@ static void cmdline_del(int from)
|
|||||||
ccline.cmdpos = from;
|
ccline.cmdpos = from;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// This function is called when the screen size changes and with incremental
|
||||||
* this function is called when the screen size changes and with incremental
|
// search and in other situations where the command line may have been
|
||||||
* search
|
// overwritten.
|
||||||
*/
|
|
||||||
void redrawcmdline(void)
|
void redrawcmdline(void)
|
||||||
{
|
{
|
||||||
if (cmd_silent)
|
if (cmd_silent)
|
||||||
@ -3669,27 +3668,54 @@ expand_cmdline (
|
|||||||
return EXPAND_OK;
|
return EXPAND_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// Cleanup matches for help tags:
|
||||||
* Cleanup matches for help tags: remove "@en" if "en" is the only language.
|
// Remove "@ab" if the top of 'helplang' is "ab" and the language of the first
|
||||||
*/
|
// tag matches it. Otherwise remove "@en" if "en" is the only language.
|
||||||
|
|
||||||
static void cleanup_help_tags(int num_file, char_u **file)
|
static void cleanup_help_tags(int num_file, char_u **file)
|
||||||
{
|
{
|
||||||
int i, j;
|
char_u buf[4];
|
||||||
int len;
|
char_u *p = buf;
|
||||||
|
|
||||||
for (i = 0; i < num_file; ++i) {
|
if (p_hlg[0] != NUL && (p_hlg[0] != 'e' || p_hlg[1] != 'n')) {
|
||||||
len = (int)STRLEN(file[i]) - 3;
|
*p++ = '@';
|
||||||
if (len > 0 && STRCMP(file[i] + len, "@en") == 0) {
|
*p++ = p_hlg[0];
|
||||||
/* Sorting on priority means the same item in another language may
|
*p++ = p_hlg[1];
|
||||||
* be anywhere. Search all items for a match up to the "@en". */
|
}
|
||||||
for (j = 0; j < num_file; ++j)
|
*p = NUL;
|
||||||
|
|
||||||
|
for (int i = 0; i < num_file; i++) {
|
||||||
|
int 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".
|
||||||
|
int j;
|
||||||
|
for (j = 0; j < num_file; j++) {
|
||||||
if (j != i
|
if (j != i
|
||||||
&& (int)STRLEN(file[j]) == len + 3
|
&& (int)STRLEN(file[j]) == len + 3
|
||||||
&& STRNCMP(file[i], file[j], len + 1) == 0)
|
&& STRNCMP(file[i], file[j], len + 1) == 0) {
|
||||||
break;
|
break;
|
||||||
if (j == num_file)
|
}
|
||||||
|
}
|
||||||
|
if (j == num_file) {
|
||||||
|
// item only exists with @en, remove it
|
||||||
file[i][len] = NUL;
|
file[i][len] = NUL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*buf != NUL) {
|
||||||
|
for (int i = 0; i < num_file; i++) {
|
||||||
|
int 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,3 +48,118 @@ func Test_help_tagjump()
|
|||||||
call assert_true(getline('.') =~ '\*{address}\*')
|
call assert_true(getline('.') =~ '\*{address}\*')
|
||||||
helpclose
|
helpclose
|
||||||
endfunc
|
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(sort(['h test-col@en', 'h test-col@ab',
|
||||||
|
\ 'h test-char@en', 'h test-char@ab']), sort(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(sort(['h test-col', 'h test-col@en',
|
||||||
|
\ 'h test-char', 'h test-char@en']), sort(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(sort(['h test-col@en', 'h test-col@ab',
|
||||||
|
\ 'h test-col@ja', 'h test-char@en',
|
||||||
|
\ 'h test-char@ab', 'h test-char@ja']), sort(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(sort(['h test-col', 'h test-col@en',
|
||||||
|
\ 'h test-col@ja', 'h test-char',
|
||||||
|
\ 'h test-char@en', 'h test-char@ja']), sort(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(sort(['h test-col', 'h test-col@ja',
|
||||||
|
\ 'h test-col@en', 'h test-char',
|
||||||
|
\ 'h test-char@ja', 'h test-char@en']), sort(list))
|
||||||
|
endif
|
||||||
|
catch
|
||||||
|
call assert_exception('X')
|
||||||
|
finally
|
||||||
|
call s:doc_config_teardown()
|
||||||
|
endtry
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: et sw=2:
|
||||||
|
@ -620,10 +620,10 @@ static int included_patches[] = {
|
|||||||
// 1824 NA
|
// 1824 NA
|
||||||
// 1823,
|
// 1823,
|
||||||
// 1822 NA
|
// 1822 NA
|
||||||
// 1821,
|
1821,
|
||||||
// 1820,
|
1820,
|
||||||
// 1819 NA
|
// 1819 NA
|
||||||
// 1818,
|
1818,
|
||||||
// 1817 NA
|
// 1817 NA
|
||||||
// 1816,
|
// 1816,
|
||||||
// 1815,
|
// 1815,
|
||||||
@ -772,7 +772,7 @@ static int included_patches[] = {
|
|||||||
// 1674 NA
|
// 1674 NA
|
||||||
1673,
|
1673,
|
||||||
// 1672 NA
|
// 1672 NA
|
||||||
// 1671,
|
1671,
|
||||||
1670,
|
1670,
|
||||||
// 1669 NA
|
// 1669 NA
|
||||||
// 1668 NA
|
// 1668 NA
|
||||||
|
Loading…
Reference in New Issue
Block a user