From c88bddfa83dbb96c2f57426794ed98a0e181ea7e Mon Sep 17 00:00:00 2001 From: Macuyler Dunn Date: Wed, 8 May 2024 21:58:16 -0400 Subject: [PATCH] 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. --- ale_linters/dart/analysis_server.vim | 12 ++++++++++-- doc/ale-dart.txt | 13 +++++++++++++ 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 " 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'