Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
204 lines
5.3 KiB
VimL
204 lines
5.3 KiB
VimL
scriptencoding utf-8
|
|
let s:is_vim = !has('nvim')
|
|
|
|
" first window id for bufnr
|
|
" builtin bufwinid returns window of current tab only
|
|
function! coc#compat#buf_win_id(bufnr) abort
|
|
let info = filter(getwininfo(), 'v:val["bufnr"] =='.a:bufnr)
|
|
if empty(info)
|
|
return -1
|
|
endif
|
|
return info[0]['winid']
|
|
endfunction
|
|
|
|
function! coc#compat#buf_set_lines(bufnr, start, end, replacement) abort
|
|
if s:is_vim
|
|
call coc#api#exec('buf_set_lines', [a:bufnr, a:start, a:end, 0, a:replacement])
|
|
else
|
|
call nvim_buf_set_lines(a:bufnr, a:start, a:end, 0, a:replacement)
|
|
endif
|
|
endfunction
|
|
|
|
function! coc#compat#buf_line_count(bufnr) abort
|
|
if exists('*nvim_buf_line_count')
|
|
return nvim_buf_line_count(a:bufnr)
|
|
endif
|
|
if bufnr('%') == a:bufnr
|
|
return line('$')
|
|
endif
|
|
if exists('*getbufinfo')
|
|
let info = getbufinfo(a:bufnr)
|
|
if empty(info)
|
|
return 0
|
|
endif
|
|
" vim 8.1 has getbufinfo but no linecount
|
|
if has_key(info[0], 'linecount')
|
|
return info[0]['linecount']
|
|
endif
|
|
endif
|
|
if exists('*getbufline')
|
|
let lines = getbufline(a:bufnr, 1, '$')
|
|
return len(lines)
|
|
endif
|
|
let curr = bufnr('%')
|
|
execute 'noa buffer '.a:bufnr
|
|
let n = line('$')
|
|
execute 'noa buffer '.curr
|
|
return n
|
|
endfunction
|
|
|
|
function! coc#compat#prepend_lines(bufnr, replacement) abort
|
|
if exists('*appendbufline')
|
|
call appendbufline(a:bufnr, 0, a:replacement)
|
|
elseif !s:is_vim
|
|
call nvim_buf_set_lines(a:bufnr, 0, 0, 0, a:replacement)
|
|
else
|
|
throw 'appendbufline() required for prepend lines.'
|
|
endif
|
|
endfunction
|
|
|
|
function! coc#compat#win_is_valid(winid) abort
|
|
if exists('*nvim_win_is_valid')
|
|
return nvim_win_is_valid(a:winid)
|
|
endif
|
|
return !empty(getwininfo(a:winid))
|
|
endfunction
|
|
|
|
" clear matches by window id, not throw on none exists window.
|
|
" may not work on vim < 8.1.1084 & neovim < 0.4.0
|
|
function! coc#compat#clear_matches(winid) abort
|
|
if !coc#compat#win_is_valid(a:winid)
|
|
return
|
|
endif
|
|
let curr = win_getid()
|
|
if curr == a:winid
|
|
call clearmatches()
|
|
return
|
|
endif
|
|
if s:is_vim
|
|
if has('patch-8.1.1084')
|
|
call clearmatches(a:winid)
|
|
endif
|
|
else
|
|
if exists('*nvim_set_current_win')
|
|
noa call nvim_set_current_win(a:winid)
|
|
call clearmatches()
|
|
noa call nvim_set_current_win(curr)
|
|
endif
|
|
endif
|
|
endfunction
|
|
|
|
function! coc#compat#matchaddpos(group, pos, priority, winid) abort
|
|
let curr = win_getid()
|
|
if curr == a:winid
|
|
call matchaddpos(a:group, a:pos, a:priority, -1)
|
|
else
|
|
if s:is_vim
|
|
if has('patch-8.1.0218')
|
|
call matchaddpos(a:group, a:pos, a:priority, -1, {'window': a:winid})
|
|
endif
|
|
else
|
|
call matchaddpos(a:group, a:pos, a:priority, -1, {'window': a:winid})
|
|
endif
|
|
endif
|
|
endfunction
|
|
|
|
function! coc#compat#buf_del_var(bufnr, name) abort
|
|
if !bufloaded(a:bufnr)
|
|
return
|
|
endif
|
|
if exists('*nvim_buf_del_var')
|
|
silent! call nvim_buf_del_var(a:bufnr, a:name)
|
|
else
|
|
if a:bufnr == bufnr('%')
|
|
execute 'unlet! b:'.a:name
|
|
elseif exists('*win_execute')
|
|
let winid = coc#compat#buf_win_id(a:bufnr)
|
|
if winid != -1
|
|
call win_execute(winid, 'unlet! b:'.a:name)
|
|
endif
|
|
endif
|
|
endif
|
|
endfunction
|
|
|
|
" hlGroup, pos, priority
|
|
function! coc#compat#matchaddgroups(winid, groups) abort
|
|
for group in a:groups
|
|
call matchaddpos(group['hlGroup'], [group['pos']], group['priority'], -1, {'window': a:winid})
|
|
endfor
|
|
endfunction
|
|
|
|
function! coc#compat#del_var(name) abort
|
|
if exists('*nvim_del_var')
|
|
silent! call nvim_del_var(a:name)
|
|
else
|
|
execute 'unlet! '.a:name
|
|
endif
|
|
endfunction
|
|
|
|
" remove keymap for specific buffer
|
|
function! coc#compat#buf_del_keymap(bufnr, mode, lhs) abort
|
|
if !bufloaded(a:bufnr)
|
|
return
|
|
endif
|
|
if exists('*nvim_buf_del_keymap')
|
|
try
|
|
call nvim_buf_del_keymap(a:bufnr, a:mode, a:lhs)
|
|
catch /^Vim\%((\a\+)\)\=:E5555/
|
|
" ignore keymap doesn't exist
|
|
endtry
|
|
return
|
|
endif
|
|
try
|
|
call coc#api#exec('buf_del_keymap', [a:bufnr, a:mode, a:lhs])
|
|
catch /E31/
|
|
" ignore keymap doesn't exist
|
|
endtry
|
|
endfunction
|
|
|
|
function! coc#compat#buf_add_keymap(bufnr, mode, lhs, rhs, opts) abort
|
|
if !bufloaded(a:bufnr)
|
|
return
|
|
endif
|
|
if exists('*nvim_buf_set_keymap')
|
|
call nvim_buf_set_keymap(a:bufnr, a:mode, a:lhs, a:rhs, a:opts)
|
|
else
|
|
call coc#api#exec('buf_set_keymap', [a:bufnr, a:mode, a:lhs, a:rhs, a:opts])
|
|
endif
|
|
endfunction
|
|
|
|
" execute command or list of commands in window
|
|
function! coc#compat#execute(winid, command, ...) abort
|
|
if exists('*win_execute')
|
|
if type(a:command) == v:t_string
|
|
keepalt call win_execute(a:winid, a:command, get(a:, 1, ''))
|
|
elseif type(a:command) == v:t_list
|
|
keepalt call win_execute(a:winid, join(a:command, "\n"), get(a:, 1, ''))
|
|
endif
|
|
elseif has('nvim')
|
|
if !nvim_win_is_valid(a:winid)
|
|
return
|
|
endif
|
|
let curr = nvim_get_current_win()
|
|
noa keepalt call nvim_set_current_win(a:winid)
|
|
if type(a:command) == v:t_string
|
|
exe get(a:, 1, '').' '.a:command
|
|
elseif type(a:command) == v:t_list
|
|
for cmd in a:command
|
|
exe get(a:, 1, '').' '.cmd
|
|
endfor
|
|
endif
|
|
noa keepalt call nvim_set_current_win(curr)
|
|
else
|
|
throw 'win_execute does not exist, please upgrade vim.'
|
|
endif
|
|
endfunc
|
|
|
|
function! coc#compat#trim(str)
|
|
if exists('*trim')
|
|
return trim(a:str)
|
|
endif
|
|
" TODO trim from beginning
|
|
return substitute(a:str, '\s\+$', '', '')
|
|
endfunction
|