Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions autoload/codeium.vim
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,22 @@ function! s:CompletionInserter(current_completion, insert_text) abort
return delete_range . insert_text . cursor_text
endfunction

function! codeium#Accept() abort
function! codeium#Accept(...) abort
let current_completion = s:GetCurrentCompletionItem()
return s:CompletionInserter(current_completion, current_completion is v:null ? '' : current_completion.completion.text)
if current_completion is v:null
let default = pumvisible() ? "\<C-N>" : "\t"
if a:0 > 0 && type(a:1) == v:t_func
try
return call(a:1, [])
catch
return default
endtry
else
return default
endif
else
return s:CompletionInserter(current_completion, current_completion is v:null ? '' : current_completion.completion.text)
endif
endfunction

function! codeium#AcceptNextWord() abort
Expand Down
2 changes: 1 addition & 1 deletion autoload/codeium/server.vim
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ function! s:UnzipAndStart(status) abort
call system('chmod +x ' . s:bin)
endif
if !filereadable(s:bin)
call codeium#log#Error('Failed to download language server binary.')
call codeium#log#Error('Failed to download language server binary. In '.s:bin)
return ''
endif
call s:ActuallyStart()
Expand Down
18 changes: 17 additions & 1 deletion plugin/codeium.vim
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,22 @@ endfunction

function! s:MapTab() abort
if !get(g:, 'codeium_no_map_tab', v:false) && !get(g:, 'codeium_disable_bindings')
imap <script><silent><nowait><expr> <Tab> codeium#Accept()
let tab_map = maparg('<Tab>', 'i', 0, 1)
if !has_key(tab_map, 'rhs')
imap <script><silent><nowait><expr> <Tab> codeium#Accept()
elseif tab_map.rhs !~# 'codeium'
if tab_map.expr
let tab_fallback = '{ -> ' . tab_map.rhs . ' }'
else
let tab_fallback = substitute(json_encode(tab_map.rhs), '<', '\\<', 'g')
endif
let tab_fallback = substitute(tab_fallback, '<SID>', '<SNR>' . get(tab_map, 'sid') . '_', 'g')
if get(tab_map, 'noremap') || get(tab_map, 'script') || mapcheck('<Left>', 'i') || mapcheck('<Del>', 'i')
exe 'imap <script><silent><nowait><expr> <Tab> codeium#Accept(' . tab_fallback . ')'
else
exe 'imap <silent><nowait><expr> <Tab> codeium#Accept(' . tab_fallback . ')'
endif
endif
endif
endfunction

Expand Down Expand Up @@ -66,6 +81,7 @@ if !get(g:, 'codeium_disable_bindings')
endif
endif

call s:MapTab()
call s:SetStyle()

let s:dir = expand('<sfile>:h:h')
Expand Down