From 2000436dfd7a25a8e9f66788c94bfb4512adda98 Mon Sep 17 00:00:00 2001 From: Daniel Welch Date: Mon, 22 Oct 2018 07:24:46 -0500 Subject: LSP configuration via didChangeConfiguration (#1852) * adding LSP configuration via workspace/didChangeConfiguration --- test/test_linter_defintion_processing.vader | 31 ++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'test/test_linter_defintion_processing.vader') diff --git a/test/test_linter_defintion_processing.vader b/test/test_linter_defintion_processing.vader index f0ec023a..a28edf9e 100644 --- a/test/test_linter_defintion_processing.vader +++ b/test/test_linter_defintion_processing.vader @@ -490,7 +490,7 @@ Execute(PreProcess should complain about using initialization_options and initia AssertThrows call ale#linter#PreProcess('testft', 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): +Execute(PreProcess should throw when initialization_options_callback is not a callback): AssertThrows call ale#linter#PreProcess('testft', { \ 'name': 'foo', \ 'lsp': 'socket', @@ -500,3 +500,32 @@ Execute (PreProcess should throw when initialization_options_callback is not a c \ 'initialization_options_callback': {}, \}) AssertEqual '`initialization_options_callback` must be a callback if defined', g:vader_exception + +Execute(PreProcess should accept LSP configuration options via lsp_config): + let g:ale_lsp_configuration = { + \ 'foo': 'bar' + \} + + let g:linter = { + \ 'name': 'x', + \ 'lsp': 'socket', + \ 'address_callback': 'X', + \ 'language_callback': 'x', + \ 'project_root_callback': 'x', + \ 'lsp_config': g:ale_lsp_configuration, + \} + + AssertEqual {'foo': 'bar'}, ale#linter#PreProcess('testft', g:linter).lsp_config + + +Execute(PreProcess should throw when lsp_config is not a Dictionary): + AssertThrows call ale#linter#PreProcess('testft', { + \ 'name': 'foo', + \ 'lsp': 'socket', + \ 'address_callback': 'X', + \ 'language': 'x', + \ 'project_root_callback': 'x', + \ 'lsp_config': 'x', + \}) + AssertEqual '`lsp_config` must be a Dictionary', g:vader_exception + -- cgit v1.2.3 From b5a7593577e1ada3f81fdaa68862ad4e93dcb5a5 Mon Sep 17 00:00:00 2001 From: Jon Parise Date: Tue, 30 Oct 2018 08:54:40 -0700 Subject: Add a `lsp_config_callback` linter option This is the callback-based variant of the existing `lsp_config` linter option. It serves the same purpose but can be used when more complicated processing is needed. `lsp_config` and `lsp_config_callback` are mutually exclusive options; if both an given, a linter preprocessing error will be raised. The runtime logic has been wrapped in `ale#lsp_linter#GetConfig` for convenience, similar to `ale#lsp_linter#GetOptions`. This also adds documentation and an `AssertLSPConfig` test function for completeness. --- test/test_linter_defintion_processing.vader | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'test/test_linter_defintion_processing.vader') diff --git a/test/test_linter_defintion_processing.vader b/test/test_linter_defintion_processing.vader index a28edf9e..d967761d 100644 --- a/test/test_linter_defintion_processing.vader +++ b/test/test_linter_defintion_processing.vader @@ -501,6 +501,31 @@ Execute(PreProcess should throw when initialization_options_callback is not a ca \}) AssertEqual '`initialization_options_callback` must be a callback if defined', g:vader_exception +Execute(PreProcess should complain about using lsp_config and lsp_config_callback together): + let g:linter = { + \ 'name': 'x', + \ 'lsp': 'socket', + \ 'address_callback': 'X', + \ 'language': 'x', + \ 'project_root_callback': 'x', + \ 'lsp_config': 'x', + \ 'lsp_config_callback': 'x', + \} + + AssertThrows call ale#linter#PreProcess('testft', g:linter) + AssertEqual 'Only one of `lsp_config` or `lsp_config_callback` should be set', g:vader_exception + +Execute(PreProcess should throw when lsp_config_callback is not a callback): + AssertThrows call ale#linter#PreProcess('testft', { + \ 'name': 'foo', + \ 'lsp': 'socket', + \ 'address_callback': 'X', + \ 'language': 'x', + \ 'project_root_callback': 'x', + \ 'lsp_config_callback': {}, + \}) + AssertEqual '`lsp_config_callback` must be a callback if defined', g:vader_exception + Execute(PreProcess should accept LSP configuration options via lsp_config): let g:ale_lsp_configuration = { \ 'foo': 'bar' @@ -517,7 +542,6 @@ Execute(PreProcess should accept LSP configuration options via lsp_config): AssertEqual {'foo': 'bar'}, ale#linter#PreProcess('testft', g:linter).lsp_config - Execute(PreProcess should throw when lsp_config is not a Dictionary): AssertThrows call ale#linter#PreProcess('testft', { \ 'name': 'foo', @@ -528,4 +552,3 @@ Execute(PreProcess should throw when lsp_config is not a Dictionary): \ 'lsp_config': 'x', \}) AssertEqual '`lsp_config` must be a Dictionary', g:vader_exception - -- cgit v1.2.3