All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
1 Describe lsp#internal#diagnostics#state
4 let g:lsp_diagnostics_enabled = 1
5 call lsp#internal#diagnostics#state#_disable()
6 call lsp#internal#diagnostics#state#_enable()
11 let g:lsp_diagnostics_enabled = 0
12 call lsp#internal#diagnostics#state#_disable()
15 It should be able to subscribe to textDocument/publishDiagnostics stream and update state correctly
16 let l:uri = 'file://some/uri'
18 let l:server1_response1 = {'method': 'textDocument/publishDiagnostics', 'params': {'uri': l:uri, 'diagnostics': [
19 \ {'severity': 1, 'message': 'm1', 'range': { 'start': { 'line': 1, 'character': 1, 'end': { 'line': 1, 'character': 1 } } }},
20 \ {'severity': 1, 'message': 'm2', 'range': { 'start': { 'line': 1, 'character': 2, 'end': { 'line': 1, 'character': 3 } } }},
22 let l:server2_response1 = {'method': 'textDocument/publishDiagnostics', 'params': {'uri': l:uri, 'diagnostics': [
23 \ {'severity': 1, 'message': 's2', 'range': { 'start': { 'line': 2, 'character': 3, 'end': { 'line': 4, 'character': 5 } } }},
25 let l:server1_response2 = {'method': 'textDocument/publishDiagnostics', 'params': {'uri': l:uri, 'diagnostics': [
26 \ {'severity': 1, 'message': 'm2', 'range': { 'start': { 'line': 1, 'character': 2, 'end': { 'line': 1, 'character': 3 } } }},
29 Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_server_for_uri(l:uri), {})
31 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response1 })
32 Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_server_for_uri(l:uri), { 'server1': l:server1_response1 })
34 let l:want[l:uri] = { 'server1': l:server1_response1 }
35 Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_uri_and_server(), l:want)
37 call lsp#stream(1, { 'server': 'server2', 'response': l:server2_response1 })
38 Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_server_for_uri(l:uri), { 'server1': l:server1_response1, 'server2': l:server2_response1 })
40 let l:want[l:uri] = { 'server1': l:server1_response1, 'server2': l:server2_response1 }
41 Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_uri_and_server(), l:want)
43 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response2 })
44 Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_server_for_uri(l:uri), { 'server1': l:server1_response2, 'server2': l:server2_response1 })
46 let l:want[l:uri] = { 'server1': l:server1_response2, 'server2': l:server2_response1 }
47 Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_uri_and_server(), l:want)
49 call lsp#stream(1, { 'server': '$vimlsp',
50 \ 'response': { 'method': '$/vimlsp/lsp_server_exit', 'params': { 'server': 'server1' } } })
52 let l:want[l:uri] = { 'server2': l:server2_response1 }
53 Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_uri_and_server(), l:want)
57 It should correctly return the state of buffer
58 call lsp#internal#diagnostics#state#_disable()
59 call lsp#internal#diagnostics#state#_enable()
61 let l:bufnr = bufnr('%')
62 Assert True(lsp#internal#diagnostics#state#_is_enabled_for_buffer(l:bufnr))
64 call lsp#internal#diagnostics#state#_disable_for_buffer(l:bufnr)
65 Assert False(lsp#internal#diagnostics#state#_is_enabled_for_buffer(l:bufnr))
67 call lsp#internal#diagnostics#state#_enable_for_buffer(l:bufnr)
68 Assert True(lsp#internal#diagnostics#state#_is_enabled_for_buffer(l:bufnr))