Check text_edits is null (#697)

* Check text_edits is null

Some Language Server return null

* Add test for textEdit is null

* Check additionalTextEdits is null
This commit is contained in:
mattn
2020-02-01 14:17:01 +09:00
committed by GitHub
parent bf8d206eca
commit 701c734c91
3 changed files with 17 additions and 1 deletions

View File

@@ -102,7 +102,7 @@ function! s:on_complete_done_after() abort
endif endif
" apply additionalTextEdits. " apply additionalTextEdits.
if has_key(l:completion_item, 'additionalTextEdits') if has_key(l:completion_item, 'additionalTextEdits') && !empty(l:completion_item['additionalTextEdits'])
let l:saved_mark = getpos("'a") let l:saved_mark = getpos("'a")
let l:pos = getpos('.') let l:pos = getpos('.')
call setpos("'a", l:pos) call setpos("'a", l:pos)

View File

@@ -43,6 +43,10 @@ function! lsp#utils#text_edit#apply_text_edits(uri, text_edits) abort
" ((0, 0), (0, 1), "") - remove first character 'a' " ((0, 0), (0, 1), "") - remove first character 'a'
" ((0, 4), (0, 5), "") - remove fifth character 'e' " ((0, 4), (0, 5), "") - remove fifth character 'e'
" ((0, 2), (0, 3), "") - remove third character 'c' " ((0, 2), (0, 3), "") - remove third character 'c'
if empty(a:text_edits)
return
endif
let l:text_edits = sort(deepcopy(a:text_edits), '<SID>sort_text_edit_desc') let l:text_edits = sort(deepcopy(a:text_edits), '<SID>sort_text_edit_desc')
let l:i = 0 let l:i = 0

View File

@@ -587,6 +587,18 @@ Describe lsp#utils#text_edit
let l:buffer_text = s:get_text() let l:buffer_text = s:get_text()
Assert Equals(l:buffer_text, ['package main', '', 'import java.util.ArrayList;', '', 'public class Main {}', '']) Assert Equals(l:buffer_text, ['package main', '', 'import java.util.ArrayList;', '', 'public class Main {}', ''])
End End
It adds null
let l:text = ['package main', '', 'import java.util.ArrayList;', '', 'public class Main {}']
call s:set_text(l:text)
call lsp#utils#text_edit#apply_text_edits(
\ expand('%'),
\ v:null)
let l:buffer_text = s:get_text()
Assert Equals(l:buffer_text, l:text + [''])
End
End End
End End