From 4062b056691daca9593e01f67026e4199cd8da87 Mon Sep 17 00:00:00 2001 From: Jerko Steiner <jerko.steiner@gmail.com> Date: Wed, 15 Jan 2020 16:45:38 +0100 Subject: [PATCH] Fix completion with langserver (autoimport in go) --- autoload/ale/completion.vim | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/autoload/ale/completion.vim b/autoload/ale/completion.vim index 2b5756e4..a173a0d4 100644 --- a/autoload/ale/completion.vim +++ b/autoload/ale/completion.vim @@ -523,13 +523,45 @@ function! ale#completion#ParseLSPCompletions(response) abort let l:doc = l:doc.value endif - call add(l:results, { + let l:result = { \ 'word': l:word, \ 'kind': ale#completion#GetCompletionSymbols(get(l:item, 'kind', '')), \ 'icase': 1, \ 'menu': get(l:item, 'detail', ''), \ 'info': (type(l:doc) is v:t_string ? l:doc : ''), - \}) + \} + + if has_key(l:item, 'additionalTextEdits') + let l:text_changes = [] + for l:edit in l:item.additionalTextEdits + let l:range = l:edit.range + call add(l:text_changes, { + \ 'start': { + \ 'line': l:range.start.line + 1, + \ 'offset': l:range.start.character + 1, + \ }, + \ 'end': { + \ 'line': l:range.end.line + 1, + \ 'offset': l:range.end.character + 1, + \ }, + \ 'newText': l:edit.newText, + \}) + endfor + + let l:changes = [{ + \ 'fileName': expand('%:p'), + \ 'textChanges': l:text_changes, + \}] + \ + let l:result.user_data = json_encode({ + \ 'codeActions': [{ + \ 'description': 'completion', + \ 'changes': l:changes, + \ }], + \ }) + endif + + call add(l:results, l:result) endfor if has_key(l:info, 'prefix')