mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #14172 from janlazo/vim-8.2.2622
vim-patch:8.2.{2622,2624,2625,2626,2631,2634}
This commit is contained in:
commit
070e084a64
@ -847,19 +847,25 @@ like |CTRL-]|.
|
|||||||
|
|
||||||
The function used for generating the taglist is specified by setting the
|
The function used for generating the taglist is specified by setting the
|
||||||
'tagfunc' option. The function will be called with three arguments:
|
'tagfunc' option. The function will be called with three arguments:
|
||||||
a:pattern The tag identifier used during the tag search.
|
a:pattern The tag identifier or pattern used during the tag search.
|
||||||
a:flags List of flags to control the function behavior.
|
a:flags String containing flags to control the function behavior.
|
||||||
a:info Dict containing the following entries:
|
a:info Dict containing the following entries:
|
||||||
buf_ffname Full filename which can be used for priority.
|
buf_ffname Full filename which can be used for priority.
|
||||||
user_data Custom data String, if stored in the tag
|
user_data Custom data String, if stored in the tag
|
||||||
stack previously by tagfunc.
|
stack previously by tagfunc.
|
||||||
|
|
||||||
Currently two flags may be passed to the tag function:
|
Currently up to three flags may be passed to the tag function:
|
||||||
'c' The function was invoked by a normal command being processed
|
'c' The function was invoked by a normal command being processed
|
||||||
(mnemonic: the tag function may use the context around the
|
(mnemonic: the tag function may use the context around the
|
||||||
cursor to perform a better job of generating the tag list.)
|
cursor to perform a better job of generating the tag list.)
|
||||||
'i' In Insert mode, the user was completing a tag (with
|
'i' In Insert mode, the user was completing a tag (with
|
||||||
|i_CTRL-X_CTRL-]|).
|
|i_CTRL-X_CTRL-]| or 'completeopt' contains `t`).
|
||||||
|
'r' The first argument to tagfunc should be interpreted as a
|
||||||
|
|pattern| (see |tag-regexp|), such as when using: >
|
||||||
|
:tag /pat
|
||||||
|
< It is also given when completing in insert mode.
|
||||||
|
If this flag is not present, the argument is usually taken
|
||||||
|
literally as the full tag name.
|
||||||
|
|
||||||
Note that when 'tagfunc' is set, the priority of the tags described in
|
Note that when 'tagfunc' is set, the priority of the tags described in
|
||||||
|tag-priority| does not apply. Instead, the priority is exactly as the
|
|tag-priority| does not apply. Instead, the priority is exactly as the
|
||||||
|
@ -164,6 +164,9 @@ au BufNewFile,BufRead *.mar setf vmasm
|
|||||||
" Atlas
|
" Atlas
|
||||||
au BufNewFile,BufRead *.atl,*.as setf atlas
|
au BufNewFile,BufRead *.atl,*.as setf atlas
|
||||||
|
|
||||||
|
" Atom is based on XML
|
||||||
|
au BufNewFile,BufRead *.atom setf xml
|
||||||
|
|
||||||
" Autoit v3
|
" Autoit v3
|
||||||
au BufNewFile,BufRead *.au3 setf autoit
|
au BufNewFile,BufRead *.au3 setf autoit
|
||||||
|
|
||||||
@ -1397,6 +1400,9 @@ else
|
|||||||
au BufNewFile,BufRead *.rmd,*.smd setf rmd
|
au BufNewFile,BufRead *.rmd,*.smd setf rmd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" RSS looks like XML
|
||||||
|
au BufNewFile,BufRead *.rss setf xml
|
||||||
|
|
||||||
" R reStructuredText file
|
" R reStructuredText file
|
||||||
if has("fname_case")
|
if has("fname_case")
|
||||||
au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst setf rrst
|
au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst setf rrst
|
||||||
|
@ -11378,17 +11378,23 @@ static void f_winnr(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
|||||||
*/
|
*/
|
||||||
static void f_winrestcmd(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
static void f_winrestcmd(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
||||||
{
|
{
|
||||||
int winnr = 1;
|
|
||||||
garray_T ga;
|
garray_T ga;
|
||||||
char_u buf[50];
|
char_u buf[50];
|
||||||
|
|
||||||
ga_init(&ga, (int)sizeof(char), 70);
|
ga_init(&ga, (int)sizeof(char), 70);
|
||||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
|
||||||
sprintf((char *)buf, "%dresize %d|", winnr, wp->w_height);
|
// Do this twice to handle some window layouts properly.
|
||||||
ga_concat(&ga, buf);
|
for (int i = 0; i < 2; i++) {
|
||||||
sprintf((char *)buf, "vert %dresize %d|", winnr, wp->w_width);
|
int winnr = 1;
|
||||||
ga_concat(&ga, buf);
|
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||||
++winnr;
|
snprintf((char *)buf, sizeof(buf), "%dresize %d|", winnr,
|
||||||
|
wp->w_height);
|
||||||
|
ga_concat(&ga, buf);
|
||||||
|
snprintf((char *)buf, sizeof(buf), "vert %dresize %d|", winnr,
|
||||||
|
wp->w_width);
|
||||||
|
ga_concat(&ga, buf);
|
||||||
|
winnr++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ga_append(&ga, NUL);
|
ga_append(&ga, NUL);
|
||||||
|
|
||||||
|
@ -1141,7 +1141,7 @@ static int find_tagfunc_tags(
|
|||||||
int result = FAIL;
|
int result = FAIL;
|
||||||
typval_T args[4];
|
typval_T args[4];
|
||||||
typval_T rettv;
|
typval_T rettv;
|
||||||
char_u flagString[3];
|
char_u flagString[4];
|
||||||
dict_T *d;
|
dict_T *d;
|
||||||
taggy_T *tag = &curwin->w_tagstack[curwin->w_tagstackidx];
|
taggy_T *tag = &curwin->w_tagstack[curwin->w_tagstackidx];
|
||||||
|
|
||||||
@ -1170,9 +1170,10 @@ static int find_tagfunc_tags(
|
|||||||
args[3].v_type = VAR_UNKNOWN;
|
args[3].v_type = VAR_UNKNOWN;
|
||||||
|
|
||||||
vim_snprintf((char *)flagString, sizeof(flagString),
|
vim_snprintf((char *)flagString, sizeof(flagString),
|
||||||
"%s%s",
|
"%s%s%s",
|
||||||
g_tag_at_cursor ? "c": "",
|
g_tag_at_cursor ? "c": "",
|
||||||
flags & TAG_INS_COMP ? "i": "");
|
flags & TAG_INS_COMP ? "i": "",
|
||||||
|
flags & TAG_REGEXP ? "r": "");
|
||||||
|
|
||||||
save_pos = curwin->w_cursor;
|
save_pos = curwin->w_cursor;
|
||||||
result = call_vim_function(curbuf->b_p_tfu, 3, args, &rettv);
|
result = call_vim_function(curbuf->b_p_tfu, 3, args, &rettv);
|
||||||
|
@ -521,7 +521,7 @@ let s:filename_checks = {
|
|||||||
\ 'xhtml': ['file.xhtml', 'file.xht'],
|
\ 'xhtml': ['file.xhtml', 'file.xht'],
|
||||||
\ 'xinetd': ['/etc/xinetd.conf'],
|
\ 'xinetd': ['/etc/xinetd.conf'],
|
||||||
\ 'xmath': ['file.msc', 'file.msf'],
|
\ 'xmath': ['file.msc', 'file.msf'],
|
||||||
\ 'xml': ['/etc/blkid.tab', '/etc/blkid.tab.old', 'file.xmi', 'file.csproj', 'file.csproj.user', 'file.ui', 'file.tpm', '/etc/xdg/menus/file.menu', 'fglrxrc', 'file.xlf', 'file.xliff', 'file.xul', 'file.wsdl'],
|
\ 'xml': ['/etc/blkid.tab', '/etc/blkid.tab.old', 'file.xmi', 'file.csproj', 'file.csproj.user', 'file.ui', 'file.tpm', '/etc/xdg/menus/file.menu', 'fglrxrc', 'file.xlf', 'file.xliff', 'file.xul', 'file.wsdl', 'file.wpl', 'any/etc/blkid.tab', 'any/etc/blkid.tab.old', 'any/etc/xdg/menus/file.menu', 'file.atom', 'file.rss'],
|
||||||
\ 'xmodmap': ['anyXmodmap'],
|
\ 'xmodmap': ['anyXmodmap'],
|
||||||
\ 'xf86conf': ['xorg.conf', 'xorg.conf-4'],
|
\ 'xf86conf': ['xorg.conf', 'xorg.conf-4'],
|
||||||
\ 'xpm2': ['file.xpm2'],
|
\ 'xpm2': ['file.xpm2'],
|
||||||
|
@ -43,12 +43,24 @@ func Test_tagfunc()
|
|||||||
call assert_equal('one', g:tagfunc_args[0])
|
call assert_equal('one', g:tagfunc_args[0])
|
||||||
call assert_equal('c', g:tagfunc_args[1])
|
call assert_equal('c', g:tagfunc_args[1])
|
||||||
|
|
||||||
|
let g:tagfunc_args=[]
|
||||||
|
execute "tag /foo$"
|
||||||
|
call assert_equal('foo$', g:tagfunc_args[0])
|
||||||
|
call assert_equal('r', g:tagfunc_args[1])
|
||||||
|
|
||||||
set cpt=t
|
set cpt=t
|
||||||
let g:tagfunc_args=[]
|
let g:tagfunc_args=[]
|
||||||
execute "normal! i\<c-n>\<c-y>"
|
execute "normal! i\<c-n>\<c-y>"
|
||||||
call assert_equal('ci', g:tagfunc_args[1])
|
call assert_equal('\<\k\k', g:tagfunc_args[0])
|
||||||
|
call assert_equal('cir', g:tagfunc_args[1])
|
||||||
call assert_equal('nothing1', getline('.')[0:7])
|
call assert_equal('nothing1', getline('.')[0:7])
|
||||||
|
|
||||||
|
let g:tagfunc_args=[]
|
||||||
|
execute "normal! ono\<c-n>\<c-n>\<c-y>"
|
||||||
|
call assert_equal('\<no', g:tagfunc_args[0])
|
||||||
|
call assert_equal('cir', g:tagfunc_args[1])
|
||||||
|
call assert_equal('nothing2', getline('.')[0:7])
|
||||||
|
|
||||||
func BadTagFunc1(...)
|
func BadTagFunc1(...)
|
||||||
return 0
|
return 0
|
||||||
endfunc
|
endfunc
|
||||||
|
@ -550,16 +550,29 @@ endfunc
|
|||||||
func Test_winrestcmd()
|
func Test_winrestcmd()
|
||||||
2split
|
2split
|
||||||
3vsplit
|
3vsplit
|
||||||
let a = winrestcmd()
|
let restcmd = winrestcmd()
|
||||||
call assert_equal(2, winheight(0))
|
call assert_equal(2, winheight(0))
|
||||||
call assert_equal(3, winwidth(0))
|
call assert_equal(3, winwidth(0))
|
||||||
wincmd =
|
wincmd =
|
||||||
call assert_notequal(2, winheight(0))
|
call assert_notequal(2, winheight(0))
|
||||||
call assert_notequal(3, winwidth(0))
|
call assert_notequal(3, winwidth(0))
|
||||||
exe a
|
exe restcmd
|
||||||
call assert_equal(2, winheight(0))
|
call assert_equal(2, winheight(0))
|
||||||
call assert_equal(3, winwidth(0))
|
call assert_equal(3, winwidth(0))
|
||||||
only
|
only
|
||||||
|
|
||||||
|
wincmd v
|
||||||
|
wincmd s
|
||||||
|
wincmd v
|
||||||
|
redraw
|
||||||
|
let restcmd = winrestcmd()
|
||||||
|
wincmd _
|
||||||
|
wincmd |
|
||||||
|
exe restcmd
|
||||||
|
redraw
|
||||||
|
call assert_equal(restcmd, winrestcmd())
|
||||||
|
|
||||||
|
only
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
function! Fun_RenewFile()
|
function! Fun_RenewFile()
|
||||||
|
Loading…
Reference in New Issue
Block a user