Use new-ish LSP 'relatedInformation' field for :ALEDetail

This commit is contained in:
Fred Emmott 2018-08-15 14:19:32 -07:00
parent 9cdd8b67b2
commit 484a70f0c0
No known key found for this signature in database
GPG Key ID: 06C22A9D789FCA28
2 changed files with 39 additions and 0 deletions

View File

@ -55,6 +55,16 @@ function! ale#lsp#response#ReadDiagnostics(response) abort
endif
endif
if has_key(l:diagnostic, 'relatedInformation')
let l:related = deepcopy(l:diagnostic.relatedInformation)
call map(l:related, {key, val ->
\ ale#path#FromURI(val.location.uri)) .
\ ':' . val.location.range.start.line . ':' . val.location.range.start.character .
\ ': ' . val.message
\ })
let l:loclist_item.detail = join(l:related, "\n") . "\n"
endif
call add(l:loclist, l:loclist_item)
endfor

View File

@ -140,6 +140,35 @@ Execute(ale#lsp#response#ReadDiagnostics() should handle multiple messages):
\ },
\ ]}})
Execute(ale#lsp#response#ReadDiagnostics() should use relatedInformation for detail):
AssertEqual [
\ {
\ 'type': 'E',
\ 'text': 'Something went wrong!',
\ 'lnum': 1,
\ 'col': 3,
\ 'end_lnum': 1,
\ 'end_col': 3,
\ 'relatedInformation': [{
\ 'message': 'might be this',
\ 'location': {
\ 'uri': 'file:///tmp/someotherfile.txt',
\ 'range': {
\ 'start': { 'line': 42, 'character': 79 },
\ 'end': { 'line': 43, 'character': 80 },
\ }
\ }
\ }]
\ }
\ ],
\ ale#lsp#response#ReadDiagnostics({'params': {'uri': 'filename.ts', 'diagnostics': [
\ {
\ 'range': Range(0, 2, 0, 2),
\ 'message': 'Something went wrong!',
\ 'detail': 'file:///tmp/someotherfile.txt:42:79: might be this'
\ }
\ ]}})
Execute(ale#lsp#response#ReadTSServerDiagnostics() should handle tsserver responses):
AssertEqual
\ [