From b47f1a1410761ee7e573c9b3580cfae182837b2b Mon Sep 17 00:00:00 2001 From: Martin Asquino Date: Wed, 9 Dec 2020 11:19:36 -0300 Subject: [PATCH] Change LanguageClient#complete to not use runSync --- autoload/LanguageClient.vim | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/autoload/LanguageClient.vim b/autoload/LanguageClient.vim index c626666f..e5d85a92 100644 --- a/autoload/LanguageClient.vim +++ b/autoload/LanguageClient.vim @@ -1459,6 +1459,19 @@ function! LanguageClient_filterCompletionItems(item, base) abort endfunction let g:LanguageClient_completeResults = [] + +function! s:CompleteCallback(base, result) abort + let l:result = s:HandleOutput(a:result) + let l:result = l:result is v:null ? [] : l:result + let l:filtered_items = [] + for l:item in l:result + if LanguageClient_filterCompletionItems(l:item, a:base) + call add(l:filtered_items, l:item) + endif + endfor + call complete(col('.'), l:filtered_items) +endfunction + function! LanguageClient#complete(findstart, base) abort if a:findstart " Before requesting completion, content between l:start and current cursor is removed. @@ -1469,20 +1482,11 @@ function! LanguageClient#complete(findstart, base) abort return l:start else " Magic happens that cursor jumps to the previously found l:start. - let l:result = LanguageClient_runSync( - \ 'LanguageClient#omniComplete', { + call LanguageClient#omniComplete({ \ 'character': LSP#character() + len(a:base), \ 'complete_position': LSP#character(), \ 'text': s:completeText, - \ }) - let l:result = l:result is v:null ? [] : l:result - let l:filtered_items = [] - for l:item in l:result - if LanguageClient_filterCompletionItems(l:item, a:base) - call add(l:filtered_items, l:item) - endif - endfor - return filtered_items + \ }, function('s:CompleteCallback', [ a:base ])) endif endfunction