Add test for LSP autoimport

This commit is contained in:
Jerko Steiner 2020-05-31 11:17:13 +02:00
parent b339a8bfa0
commit b29e9867e8
3 changed files with 75 additions and 3 deletions

View file

@ -533,6 +533,7 @@ function! ale#completion#ParseLSPCompletions(response) abort
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, {
@ -549,7 +550,7 @@ function! ale#completion#ParseLSPCompletions(response) abort
endfor
let l:changes = [{
\ 'fileName': expand('%:p'),
\ 'fileName': expand('#' . l:buffer . ':p'),
\ 'textChanges': l:text_changes,
\}]
\

View file

@ -90,8 +90,9 @@ function! s:getChanges(workspace_edit) abort
return a:workspace_edit.changes
elseif has_key(a:workspace_edit, 'documentChanges')
let l:document_changes = []
if type(a:workspace_edit.documentChanges) is v:t_dict &&
\ has_key(a:workspace_edit.documentChanges, 'edits')
if type(a:workspace_edit.documentChanges) is v:t_dict
\ && has_key(a:workspace_edit.documentChanges, 'edits')
call add(l:document_changes, a:workspace_edit.documentChanges)
elseif type(a:workspace_edit.documentChanges) is v:t_list
let l:document_changes = a:workspace_edit.documentChanges

View file

@ -526,3 +526,73 @@ Execute(Should handle completion messages with the deprecated insertText attribu
\ ],
\ },
\ })
Execute(Should handle completion messages with additionalTextEdits):
AssertEqual
\ [
\ {
\ 'word': 'next_callback',
\ 'menu': 'PlayTimeCallback',
\ 'info': '',
\ 'kind': 'v',
\ 'icase': 1,
\ 'user_data': json_encode({
\ 'codeActions': [
\ {
\ 'description': 'completion',
\ 'changes': [
\ {
\ 'fileName': expand('#' . bufnr('') . ':p'),
\ 'textChanges': [
\ {
\ 'start': {
\ 'line': 11,
\ 'offset': 2,
\ },
\ 'end': {
\ 'line': 13,
\ 'offset': 4,
\ },
\ 'newText': 'from "module" import next_callback',
\ },
\ ],
\ },
\ ],
\ },
\ ],
\ }),
\ },
\ ],
\ ale#completion#ParseLSPCompletions({
\ 'id': 226,
\ 'jsonrpc': '2.0',
\ 'result': {
\ 'isIncomplete': v:false,
\ 'items': [
\ {
\ 'detail': 'PlayTimeCallback',
\ 'filterText': 'next_callback',
\ 'insertText': 'next_callback',
\ 'insertTextFormat': 1,
\ 'kind': 6,
\ 'label': ' next_callback',
\ 'sortText': '3ee19999next_callback',
\ 'additionalTextEdits': [
\ {
\ 'range': {
\ 'start': {
\ 'line': 10,
\ 'character': 1,
\ },
\ 'end': {
\ 'line': 12,
\ 'character': 3,
\ },
\ },
\ 'newText': 'from "module" import next_callback',
\ },
\ ],
\ },
\ ],
\ },
\ })