From 004c37f6d802919c087a0c1b73aebee065ca7a05 Mon Sep 17 00:00:00 2001 From: Macuyler Dunn Date: Fri, 19 Apr 2024 21:10:30 -0400 Subject: [PATCH 1/4] 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 --- ale_linters/dart/analysis_server.vim | 4 +--- test/linter/test_dart_analysis_server.vader | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/ale_linters/dart/analysis_server.vim b/ale_linters/dart/analysis_server.vim index a6870da982..3e96570ce0 100644 --- a/ale_linters/dart/analysis_server.vim +++ b/ale_linters/dart/analysis_server.vim @@ -15,9 +15,7 @@ function! ale_linters#dart#analysis_server#GetCommand(buffer) abort let l:executable = ale#Var(a:buffer, 'dart_analysis_server_executable') let l:dart = resolve(exepath(l:executable)) - return '%e ' - \ . fnamemodify(l:dart, ':h') . '/snapshots/analysis_server.dart.snapshot' - \ . ' --lsp' + return '%e language-server --protocol=lsp' endfunction call ale#linter#Define('dart', { diff --git a/test/linter/test_dart_analysis_server.vader b/test/linter/test_dart_analysis_server.vader index 1754109acb..275d4add61 100644 --- a/test/linter/test_dart_analysis_server.vader +++ b/test/linter/test_dart_analysis_server.vader @@ -6,10 +6,10 @@ 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') - \ . ' ./snapshots/analysis_server.dart.snapshot --lsp' + \ . ' language-server --protocol=lsp' From 9fd9493eb0567790c3ef5e9cf0c554f1e30d5772 Mon Sep 17 00:00:00 2001 From: Macuyler Dunn Date: Sun, 21 Apr 2024 11:33:01 -0400 Subject: [PATCH 2/4] Add ale_dart_analysis_server_enable_language_server option This allows users to opt-in to the new `dart language-server` command. --- ale_linters/dart/analysis_server.vim | 12 +++++++++++- doc/ale-dart.txt | 10 ++++++++++ test/linter/test_dart_analysis_server.vader | 8 +++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/ale_linters/dart/analysis_server.vim b/ale_linters/dart/analysis_server.vim index 3e96570ce0..ed732dc398 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', 0) call ale#Set('dart_analysis_server_executable', 'dart') function! ale_linters#dart#analysis_server#GetProjectRoot(buffer) abort @@ -12,10 +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)) + let l:output = '%e ' + \ . fnamemodify(l:dart, ':h') . '/snapshots/analysis_server.dart.snapshot' + \ . ' --lsp' - return '%e language-server --protocol=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 4824e82e36..dc798c8619 100644 --- a/doc/ale-dart.txt +++ b/doc/ale-dart.txt @@ -27,6 +27,16 @@ 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: `0` + + When set to `1`, ALE will use the new `dart language-server` command to + launch the language server. + + =============================================================================== dart-analyze *ale-dart-analyze* diff --git a/test/linter/test_dart_analysis_server.vader b/test/linter/test_dart_analysis_server.vader index 275d4add61..c3f49009d7 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') - \ . ' language-server --protocol=lsp' + \ . ' ./snapshots/analysis_server.dart.snapshot --lsp' Execute(The executable should be configurable): let g:ale_dart_analysis_server_executable = 'foobar' AssertLinter 'foobar', ale#Escape('foobar') + \ . ' ./snapshots/analysis_server.dart.snapshot --lsp' + +Execute(Should be able to enable new language-server command): + let g:ale_dart_analysis_server_enable_language_server = 1 + + AssertLinter 'dart', ale#Escape('dart') \ . ' language-server --protocol=lsp' From 05718dd94cd52c0cc6c4f0b9fae162aa4faaf480 Mon Sep 17 00:00:00 2001 From: Macuyler Dunn Date: Sun, 21 Apr 2024 11:44:45 -0400 Subject: [PATCH 3/4] Enable ale_dart_analysis_server_enable_language_server option by default --- ale_linters/dart/analysis_server.vim | 2 +- doc/ale-dart.txt | 5 +++-- test/linter/test_dart_analysis_server.vader | 10 +++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ale_linters/dart/analysis_server.vim b/ale_linters/dart/analysis_server.vim index ed732dc398..12a5d59086 100644 --- a/ale_linters/dart/analysis_server.vim +++ b/ale_linters/dart/analysis_server.vim @@ -1,7 +1,7 @@ " Author: Nelson Yeung " Description: Check Dart files with dart analysis server LSP -call ale#Set('dart_analysis_server_enable_language_server', 0) +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 diff --git a/doc/ale-dart.txt b/doc/ale-dart.txt index dc798c8619..855f25e8bb 100644 --- a/doc/ale-dart.txt +++ b/doc/ale-dart.txt @@ -31,10 +31,11 @@ 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: `0` + Default: `1` When set to `1`, ALE will use the new `dart language-server` command to - launch the language server. + launch the language server. When set to `0`, ALE will use the original + `./snapshots/analysis_server.dart.snapshot --lsp` command. =============================================================================== diff --git a/test/linter/test_dart_analysis_server.vader b/test/linter/test_dart_analysis_server.vader index c3f49009d7..1b653dfd46 100644 --- a/test/linter/test_dart_analysis_server.vader +++ b/test/linter/test_dart_analysis_server.vader @@ -6,16 +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') - \ . ' ./snapshots/analysis_server.dart.snapshot --lsp' + \ . ' language-server --protocol=lsp' -Execute(Should be able to enable new language-server command): - let g:ale_dart_analysis_server_enable_language_server = 1 +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') - \ . ' language-server --protocol=lsp' + \ . ' ./snapshots/analysis_server.dart.snapshot --lsp' From 09602c6ac2010bf1748017e43ac74aa31a114951 Mon Sep 17 00:00:00 2001 From: Macuyler Dunn Date: Wed, 8 May 2024 09:50:37 -0400 Subject: [PATCH 4/4] Update doc/ale-dart.txt Include the dart version number where the `dart language-server` command was added. --- doc/ale-dart.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/ale-dart.txt b/doc/ale-dart.txt index 855f25e8bb..8761515e0c 100644 --- a/doc/ale-dart.txt +++ b/doc/ale-dart.txt @@ -33,9 +33,11 @@ g:ale_dart_analysis_server_enable_language_server Type: |Number| Default: `1` - When set to `1`, ALE will use the new `dart language-server` command to - launch the language server. When set to `0`, ALE will use the original - `./snapshots/analysis_server.dart.snapshot --lsp` command. + 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. ===============================================================================