Allow initialization options to be passed to language servers

This commit is contained in:
Ben Falconer
2018-06-06 16:58:49 +01:00
parent c49ea1a5e3
commit 1a4b08539b
6 changed files with 75 additions and 8 deletions

View File

@@ -16,9 +16,10 @@ Execute(ale#lsp#message#Initialize() should return correct messages):
\ 'processId': getpid(),
\ 'rootPath': '/foo/bar',
\ 'capabilities': {},
\ 'initializationOptions': {'foo': 'bar'},
\ }
\ ],
\ ale#lsp#message#Initialize('/foo/bar')
\ ale#lsp#message#Initialize('/foo/bar', {'foo': 'bar'})
Execute(ale#lsp#message#Initialized() should return correct messages):
AssertEqual [1, 'initialized'], ale#lsp#message#Initialized()

View File

@@ -465,3 +465,28 @@ Execute(PreProcess should complain about address_callback for non-LSP linters):
AssertThrows call ale#linter#PreProcess(g:linter)
AssertEqual '`address_callback` cannot be used when lsp != ''socket''', g:vader_exception
Execute(PreProcess should complain about using initialization_options and initialization_options_callback together):
let g:linter = {
\ 'name': 'x',
\ 'lsp': 'socket',
\ 'address_callback': 'X',
\ 'language': 'x',
\ 'project_root_callback': 'x',
\ 'initialization_options': 'x',
\ 'initialization_options_callback': 'x',
\}
AssertThrows call ale#linter#PreProcess(g:linter)
AssertEqual 'Only one of `initialization_options` or `initialization_options_callback` should be set', g:vader_exception
Execute (PreProcess should throw when initialization_options_callback is not a callback):
AssertThrows call ale#linter#PreProcess({
\ 'name': 'foo',
\ 'lsp': 'socket',
\ 'address_callback': 'X',
\ 'language': 'x',
\ 'project_root_callback': 'x',
\ 'initialization_options_callback': {},
\})
AssertEqual '`initialization_options_callback` must be a callback if defined', g:vader_exception