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.
     //