Modify dartdev language-server to call the server snapshot
This change also modifies the Dart Analysis Server to default to use the LSP protocol
Change-Id: I73a1ceae9a05bc8e5af219e4f28df959c054d4c9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/247461
Commit-Queue: Jaime Wren <jwren@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/dartdev/lib/src/commands/language_server.dart b/pkg/dartdev/lib/src/commands/language_server.dart
index 65eca06..88bfac3 100644
--- a/pkg/dartdev/lib/src/commands/language_server.dart
+++ b/pkg/dartdev/lib/src/commands/language_server.dart
@@ -8,7 +8,9 @@
import 'package:args/args.dart';
import '../core.dart';
+import '../sdk.dart';
import '../utils.dart';
+import '../vm_interop_handler.dart';
class LanguageServerCommand extends DartdevCommand {
static const String commandName = 'language-server';
@@ -38,11 +40,19 @@
@override
Future<int> run() async {
- final driver = server_driver.Driver();
- driver.start(
- argResults!.arguments,
- defaultToLsp: true,
- );
+ var args = argResults!.arguments;
+ if (!args.any((arg) => arg.startsWith('--protocol'))) {
+ args = [...args, '--protocol=lsp'];
+ }
+
+ if (!Sdk.checkArtifactExists(sdk.analysisServerSnapshot)) return 255;
+
+ VmInteropHandler.run(
+ sdk.analysisServerSnapshot,
+ [
+ ...args,
+ ],
+ packageConfigOverride: null);
// The server will continue to run past the return from this method.
//