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
76 lines
2.1 KiB
VimL
76 lines
2.1 KiB
VimL
let s:bridge_id = 0
|
|
let s:sources = {}
|
|
|
|
"
|
|
" cmp#register_source
|
|
"
|
|
function! cmp#register_source(name, source) abort
|
|
let l:methods = []
|
|
for l:method in [
|
|
\ 'is_available',
|
|
\ 'get_debug_name',
|
|
\ 'get_position_encoding_kind',
|
|
\ 'get_trigger_characters',
|
|
\ 'get_keyword_pattern',
|
|
\ 'complete',
|
|
\ 'execute',
|
|
\ 'resolve'
|
|
\ ]
|
|
if has_key(a:source, l:method) && type(a:source[l:method]) == v:t_func
|
|
call add(l:methods, l:method)
|
|
endif
|
|
endfor
|
|
|
|
let s:bridge_id += 1
|
|
let a:source.bridge_id = s:bridge_id
|
|
let a:source.id = luaeval('require("cmp").register_source(_A[1], require("cmp.vim_source").new(_A[2], _A[3]))', [a:name, s:bridge_id, l:methods])
|
|
let s:sources[s:bridge_id] = a:source
|
|
return a:source.id
|
|
endfunction
|
|
|
|
"
|
|
" cmp#unregister_source
|
|
"
|
|
function! cmp#unregister_source(id) abort
|
|
if has_key(s:sources, a:id)
|
|
unlet s:sources[a:id]
|
|
endif
|
|
call luaeval('require("cmp").unregister_source(_A)', a:id)
|
|
endfunction
|
|
|
|
"
|
|
" cmp#_method
|
|
"
|
|
function! cmp#_method(bridge_id, method, args) abort
|
|
try
|
|
let l:source = s:sources[a:bridge_id]
|
|
if a:method ==# 'is_available'
|
|
return l:source[a:method]()
|
|
elseif a:method ==# 'get_debug_name'
|
|
return l:source[a:method]()
|
|
elseif a:method ==# 'get_position_encoding_kind'
|
|
return l:source[a:method](a:args[0])
|
|
elseif a:method ==# 'get_keyword_pattern'
|
|
return l:source[a:method](a:args[0])
|
|
elseif a:method ==# 'get_trigger_characters'
|
|
return l:source[a:method](a:args[0])
|
|
elseif a:method ==# 'complete'
|
|
return l:source[a:method](a:args[0], s:callback(a:args[1]))
|
|
elseif a:method ==# 'resolve'
|
|
return l:source[a:method](a:args[0], s:callback(a:args[1]))
|
|
elseif a:method ==# 'execute'
|
|
return l:source[a:method](a:args[0], s:callback(a:args[1]))
|
|
endif
|
|
catch /.*/
|
|
echomsg string({ 'exception': v:exception, 'throwpoint': v:throwpoint })
|
|
endtry
|
|
return v:null
|
|
endfunction
|
|
|
|
"
|
|
" s:callback
|
|
"
|
|
function! s:callback(id) abort
|
|
return { ... -> luaeval('require("cmp.vim_source").on_callback(_A[1], _A[2])', [a:id, a:000]) }
|
|
endfunction
|