dotfiles/private_dot_config/nvim/plugged/coc.nvim/autoload/coc/window.vim
array-in-a-matrix a7aa42621c added
2022-01-08 17:30:13 -05:00

57 lines
1.4 KiB
VimL

function! coc#window#tabnr(winid) abort
if exists('*win_execute')
let ref = {}
call win_execute(a:winid, 'let ref["out"] = tabpagenr()')
return get(ref, 'out', -1)
elseif has('nvim')
let info = getwininfo(a:winid)
return empty(info) ? -1 : info[0]['tabnr']
else
throw 'win_execute() not exists, please upgrade your vim.'
endif
endfunction
" Get single window by window variable, current tab only
function! coc#window#find(key, val) abort
for i in range(1, winnr('$'))
let res = getwinvar(i, a:key)
if res == a:val
return win_getid(i)
endif
endfor
return -1
endfunction
" Make sure window exists
function! coc#window#gotoid(winid) abort
noa let res = win_gotoid(a:winid)
if res == 0
throw 'Invalid window number'
endif
endfunction
" Avoid autocmd & errors
function! coc#window#close(winid) abort
if empty(a:winid) || a:winid == -1
return
endif
if exists('*nvim_win_is_valid') && exists('*nvim_win_close')
if nvim_win_is_valid(a:winid)
noa call nvim_win_close(a:winid, 1)
endif
elseif exists('*win_execute')
call coc#compat#execute(a:winid, 'noa close!', 'silent!')
else
let curr = win_getid()
if curr == a:winid
noa silent! close!
else
let res = win_gotoid(a:winid)
if res
noa silent! close!
noa call win_gotoid(curr)
endif
endif
endif
endfunction