mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07: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
|
||||
'tagfunc' option. The function will be called with three arguments:
|
||||
a:pattern The tag identifier used during the tag search.
|
||||
a:flags List of flags to control the function behavior.
|
||||
a:pattern The tag identifier or pattern used during the tag search.
|
||||
a:flags String containing flags to control the function behavior.
|
||||
a:info Dict containing the following entries:
|
||||
buf_ffname Full filename which can be used for priority.
|
||||
user_data Custom data String, if stored in the tag
|
||||
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
|
||||
(mnemonic: the tag function may use the context around the
|
||||
cursor to perform a better job of generating the tag list.)
|
||||
'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
|
||||
|tag-priority| does not apply. Instead, the priority is exactly as the
|
||||
|
@ -164,6 +164,9 @@ au BufNewFile,BufRead *.mar setf vmasm
|
||||
" Atlas
|
||||
au BufNewFile,BufRead *.atl,*.as setf atlas
|
||||
|
||||
" Atom is based on XML
|
||||
au BufNewFile,BufRead *.atom setf xml
|
||||
|
||||
" Autoit v3
|
||||
au BufNewFile,BufRead *.au3 setf autoit
|
||||
|
||||
@ -1397,6 +1400,9 @@ else
|
||||
au BufNewFile,BufRead *.rmd,*.smd setf rmd
|
||||
endif
|
||||
|
||||
" RSS looks like XML
|
||||
au BufNewFile,BufRead *.rss setf xml
|
||||
|
||||
" R reStructuredText file
|
||||
if has("fname_case")
|
||||
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)
|
||||
{
|
||||
int winnr = 1;
|
||||
garray_T ga;
|
||||
char_u buf[50];
|
||||
|
||||
ga_init(&ga, (int)sizeof(char), 70);
|
||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||
sprintf((char *)buf, "%dresize %d|", winnr, wp->w_height);
|
||||
ga_concat(&ga, buf);
|
||||
sprintf((char *)buf, "vert %dresize %d|", winnr, wp->w_width);
|
||||
ga_concat(&ga, buf);
|
||||
++winnr;
|
||||
|
||||
// Do this twice to handle some window layouts properly.
|
||||
for (int i = 0; i < 2; i++) {
|
||||
int winnr = 1;
|
||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||
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);
|
||||
|
||||
|
@ -1141,7 +1141,7 @@ static int find_tagfunc_tags(
|
||||
int result = FAIL;
|
||||
typval_T args[4];
|
||||
typval_T rettv;
|
||||
char_u flagString[3];
|
||||
char_u flagString[4];
|
||||
dict_T *d;
|
||||
taggy_T *tag = &curwin->w_tagstack[curwin->w_tagstackidx];
|
||||
|
||||
@ -1170,9 +1170,10 @@ static int find_tagfunc_tags(
|
||||
args[3].v_type = VAR_UNKNOWN;
|
||||
|
||||
vim_snprintf((char *)flagString, sizeof(flagString),
|
||||
"%s%s",
|
||||
"%s%s%s",
|
||||
g_tag_at_cursor ? "c": "",
|
||||
flags & TAG_INS_COMP ? "i": "");
|
||||
flags & TAG_INS_COMP ? "i": "",
|
||||
flags & TAG_REGEXP ? "r": "");
|
||||
|
||||
save_pos = curwin->w_cursor;
|
||||
result = call_vim_function(curbuf->b_p_tfu, 3, args, &rettv);
|
||||
|
@ -521,7 +521,7 @@ let s:filename_checks = {
|
||||
\ 'xhtml': ['file.xhtml', 'file.xht'],
|
||||
\ 'xinetd': ['/etc/xinetd.conf'],
|
||||
\ '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'],
|
||||
\ 'xf86conf': ['xorg.conf', 'xorg.conf-4'],
|
||||
\ 'xpm2': ['file.xpm2'],
|
||||
|
@ -43,12 +43,24 @@ func Test_tagfunc()
|
||||
call assert_equal('one', g:tagfunc_args[0])
|
||||
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
|
||||
let g:tagfunc_args=[]
|
||||
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])
|
||||
|
||||
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(...)
|
||||
return 0
|
||||
endfunc
|
||||
|
@ -550,16 +550,29 @@ endfunc
|
||||
func Test_winrestcmd()
|
||||
2split
|
||||
3vsplit
|
||||
let a = winrestcmd()
|
||||
let restcmd = winrestcmd()
|
||||
call assert_equal(2, winheight(0))
|
||||
call assert_equal(3, winwidth(0))
|
||||
wincmd =
|
||||
call assert_notequal(2, winheight(0))
|
||||
call assert_notequal(3, winwidth(0))
|
||||
exe a
|
||||
exe restcmd
|
||||
call assert_equal(2, winheight(0))
|
||||
call assert_equal(3, winwidth(0))
|
||||
only
|
||||
|
||||
wincmd v
|
||||
wincmd s
|
||||
wincmd v
|
||||
redraw
|
||||
let restcmd = winrestcmd()
|
||||
wincmd _
|
||||
wincmd |
|
||||
exe restcmd
|
||||
redraw
|
||||
call assert_equal(restcmd, winrestcmd())
|
||||
|
||||
only
|
||||
endfunc
|
||||
|
||||
function! Fun_RenewFile()
|
||||
|
Loading…
Reference in New Issue
Block a user