#3312 - Just check if additionalTextEdits is non-empty

This commit is contained in:
w0rp 2020-08-27 08:57:12 +01:00
parent 396fba7cca
commit a955f5dfa8
No known key found for this signature in database
GPG Key ID: 0FC1ECAA8C81CD83
2 changed files with 3 additions and 67 deletions

View File

@ -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,

View File

@ -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': [],
\ },
\ ],
\ },