diff options
author | Macuyler Dunn <dev@macuyler.com> | 2024-05-08 21:58:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-09 10:58:16 +0900 |
commit | c88bddfa83dbb96c2f57426794ed98a0e181ea7e (patch) | |
tree | dda6b9d509cde8fb4287c3774cef5cee5fffd0cc | |
parent | 70eeae54fbd5c2e254604d543674f02d42c0ccdd (diff) | |
download | ale-c88bddfa83dbb96c2f57426794ed98a0e181ea7e.zip |
Update dart analysis_server command (#4761)
* Update dart analysis_server command
In 2021 the dart team added a new sub-command `language-server` to
replace the original `./snapshots/analysis_server.dart.snapshot --lsp`
convention for starting the language server.
https://github.com/dart-lang/sdk/commit/c224cc2e0d4cd8fc536c21ee963a0254d18a27bb
* Add ale_dart_analysis_server_enable_language_server option
This allows users to opt-in to the new `dart language-server` command.
* Enable ale_dart_analysis_server_enable_language_server option by default
* Update doc/ale-dart.txt
Include the dart version number where the `dart language-server` command
was added.
-rw-r--r-- | ale_linters/dart/analysis_server.vim | 12 | ||||
-rw-r--r-- | doc/ale-dart.txt | 13 | ||||
-rw-r--r-- | test/linter/test_dart_analysis_server.vader | 8 |
3 files changed, 30 insertions, 3 deletions
diff --git a/ale_linters/dart/analysis_server.vim b/ale_linters/dart/analysis_server.vim index a6870da9..12a5d590 100644 --- a/ale_linters/dart/analysis_server.vim +++ b/ale_linters/dart/analysis_server.vim @@ -1,6 +1,7 @@ " Author: Nelson Yeung <nelsyeung@gmail.com> " Description: Check Dart files with dart analysis server LSP +call ale#Set('dart_analysis_server_enable_language_server', 1) call ale#Set('dart_analysis_server_executable', 'dart') function! ale_linters#dart#analysis_server#GetProjectRoot(buffer) abort @@ -12,12 +13,19 @@ function! ale_linters#dart#analysis_server#GetProjectRoot(buffer) abort endfunction function! ale_linters#dart#analysis_server#GetCommand(buffer) abort + let l:language_server = ale#Var(a:buffer, 'dart_analysis_server_enable_language_server') let l:executable = ale#Var(a:buffer, 'dart_analysis_server_executable') let l:dart = resolve(exepath(l:executable)) - - return '%e ' + let l:output = '%e ' \ . fnamemodify(l:dart, ':h') . '/snapshots/analysis_server.dart.snapshot' \ . ' --lsp' + + " Enable new language-server command + if l:language_server == 1 + let l:output = '%e language-server --protocol=lsp' + endif + + return l:output endfunction call ale#linter#Define('dart', { diff --git a/doc/ale-dart.txt b/doc/ale-dart.txt index 4824e82e..8761515e 100644 --- a/doc/ale-dart.txt +++ b/doc/ale-dart.txt @@ -27,6 +27,19 @@ g:ale_dart_analysis_server_executable *g:ale_dart_analysis_server_executable* This variable can be set to change the path of dart. +g:ale_dart_analysis_server_enable_language_server + *g:ale_dart_analysis_server_enable_language_server* + *b:ale_dart_analysis_server_enable_language_server* + Type: |Number| + Default: `1` + + When set to `1`, ALE will use the new `dart language-server` command, + available from Dart version 2.16.0, to launch the language server. When set + to `0`, ALE will instead use the deprecated + `./snapshots/analysis_server.dart.snapshot --lsp` command used by older + versions of Dart. + + =============================================================================== dart-analyze *ale-dart-analyze* diff --git a/test/linter/test_dart_analysis_server.vader b/test/linter/test_dart_analysis_server.vader index 1754109a..1b653dfd 100644 --- a/test/linter/test_dart_analysis_server.vader +++ b/test/linter/test_dart_analysis_server.vader @@ -6,10 +6,16 @@ After: Execute(The default command should be correct): AssertLinter 'dart', ale#Escape('dart') - \ . ' ./snapshots/analysis_server.dart.snapshot --lsp' + \ . ' language-server --protocol=lsp' Execute(The executable should be configurable): let g:ale_dart_analysis_server_executable = 'foobar' AssertLinter 'foobar', ale#Escape('foobar') + \ . ' language-server --protocol=lsp' + +Execute(Should be able to disable new language-server command): + let g:ale_dart_analysis_server_enable_language_server = 0 + + AssertLinter 'dart', ale#Escape('dart') \ . ' ./snapshots/analysis_server.dart.snapshot --lsp' |