mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-08 13:34:46 +08:00
Add test for LSP autoimport
This commit is contained in:
@@ -533,6 +533,7 @@ function! ale#completion#ParseLSPCompletions(response) abort
|
|||||||
|
|
||||||
if has_key(l:item, 'additionalTextEdits')
|
if has_key(l:item, 'additionalTextEdits')
|
||||||
let l:text_changes = []
|
let l:text_changes = []
|
||||||
|
|
||||||
for l:edit in l:item.additionalTextEdits
|
for l:edit in l:item.additionalTextEdits
|
||||||
let l:range = l:edit.range
|
let l:range = l:edit.range
|
||||||
call add(l:text_changes, {
|
call add(l:text_changes, {
|
||||||
@@ -549,7 +550,7 @@ function! ale#completion#ParseLSPCompletions(response) abort
|
|||||||
endfor
|
endfor
|
||||||
|
|
||||||
let l:changes = [{
|
let l:changes = [{
|
||||||
\ 'fileName': expand('%:p'),
|
\ 'fileName': expand('#' . l:buffer . ':p'),
|
||||||
\ 'textChanges': l:text_changes,
|
\ 'textChanges': l:text_changes,
|
||||||
\}]
|
\}]
|
||||||
\
|
\
|
||||||
|
|||||||
@@ -90,8 +90,9 @@ function! s:getChanges(workspace_edit) abort
|
|||||||
return a:workspace_edit.changes
|
return a:workspace_edit.changes
|
||||||
elseif has_key(a:workspace_edit, 'documentChanges')
|
elseif has_key(a:workspace_edit, 'documentChanges')
|
||||||
let l:document_changes = []
|
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)
|
call add(l:document_changes, a:workspace_edit.documentChanges)
|
||||||
elseif type(a:workspace_edit.documentChanges) is v:t_list
|
elseif type(a:workspace_edit.documentChanges) is v:t_list
|
||||||
let l:document_changes = a:workspace_edit.documentChanges
|
let l:document_changes = a:workspace_edit.documentChanges
|
||||||
|
|||||||
@@ -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',
|
||||||
|
\ },
|
||||||
|
\ ],
|
||||||
|
\ },
|
||||||
|
\ ],
|
||||||
|
\ },
|
||||||
|
\ })
|
||||||
|
|||||||
Reference in New Issue
Block a user