diff --git a/autoload/ale/completion.vim b/autoload/ale/completion.vim index 87efd191..f6a0c350 100644 --- a/autoload/ale/completion.vim +++ b/autoload/ale/completion.vim @@ -496,18 +496,6 @@ function! ale#completion#NullFilter(buffer, item) abort return 1 endfunction -" Check if additional text edits make changes starting on lines other than the -" one you're asking for completions on. -function! s:TextEditsChangeOtherLines(line, text_edit_list) abort - for l:edit in a:text_edit_list - if l:edit.range.start.line + 1 isnot a:line - return 1 - endif - endfor - - return 0 -endfunction - function! ale#completion#ParseLSPCompletions(response) abort let l:buffer = bufnr('') let l:info = get(b:, 'ale_completion_info', {}) @@ -552,9 +540,8 @@ function! ale#completion#ParseLSPCompletions(response) abort " Don't use LSP items with additional text edits when autoimport for " completions is turned off. - if has_key(l:item, 'additionalTextEdits') + if !empty(get(l:item, 'additionalTextEdits')) \&& !g:ale_completion_autoimport - \&& s:TextEditsChangeOtherLines(l:info.line, l:item.additionalTextEdits) continue endif @@ -576,15 +563,6 @@ function! ale#completion#ParseLSPCompletions(response) abort let l:text_changes = [] for l:edit in l:item.additionalTextEdits - " Don't apply additional text edits that are identical to the - " word we're going to insert anyway. - if l:edit.newText is# l:word - \&& l:edit.range.start.line + 1 is l:info.line - \&& l:edit.range.end.line + 1 is l:info.line - \&& l:edit.range.start.character is l:edit.range.end.character - continue - endif - call add(l:text_changes, { \ 'start': { \ 'line': l:edit.range.start.line + 1, diff --git a/test/completion/test_lsp_completion_parsing.vader b/test/completion/test_lsp_completion_parsing.vader index 395314d7..b8e71320 100644 --- a/test/completion/test_lsp_completion_parsing.vader +++ b/test/completion/test_lsp_completion_parsing.vader @@ -537,7 +537,6 @@ Execute(Should handle completion messages with the deprecated insertText attribu Execute(Should handle completion messages with additionalTextEdits when ale_completion_autoimport is turned on): let g:ale_completion_autoimport = 1 - let b:ale_completion_info = {'line': 30} AssertEqual \ [ @@ -592,19 +591,6 @@ Execute(Should handle completion messages with additionalTextEdits when ale_comp \ { \ 'range': { \ 'start': { - \ 'line': 29, - \ 'character': 10, - \ }, - \ 'end': { - \ 'line': 29, - \ 'character': 10, - \ }, - \ }, - \ 'newText': 'next_callback', - \ }, - \ { - \ 'range': { - \ 'start': { \ 'line': 10, \ 'character': 1, \ }, @@ -645,19 +631,6 @@ Execute(Should not handle completion messages with additionalTextEdits when ale_ \ { \ 'range': { \ 'start': { - \ 'line': 29, - \ 'character': 10, - \ }, - \ 'end': { - \ 'line': 29, - \ 'character': 10, - \ }, - \ }, - \ 'newText': 'next_callback', - \ }, - \ { - \ 'range': { - \ 'start': { \ 'line': 10, \ 'character': 1, \ }, @@ -674,9 +647,8 @@ Execute(Should not handle completion messages with additionalTextEdits when ale_ \ }, \ }) -Execute(Should still handle completion messages with additionalTextEdits with ale_completion_autoimport turned off, if edits all start on the line): +Execute(Should still handle completion messages with empty additionalTextEdits with ale_completion_autoimport turned off): let g:ale_completion_autoimport = 0 - let b:ale_completion_info = {'line': 30} AssertEqual \ [ @@ -702,21 +674,7 @@ Execute(Should still handle completion messages with additionalTextEdits with al \ 'kind': 6, \ 'label': ' next_callback', \ 'sortText': '3ee19999next_callback', - \ 'additionalTextEdits': [ - \ { - \ 'range': { - \ 'start': { - \ 'line': 29, - \ 'character': 10, - \ }, - \ 'end': { - \ 'line': 29, - \ 'character': 10, - \ }, - \ }, - \ 'newText': 'next_callback', - \ }, - \ ], + \ 'additionalTextEdits': [], \ }, \ ], \ },