LspClient.inProcess constructor

LspClient.inProcess()

Creates a client wired to a fresh in-process LspServer over a linked pair of MessageLspEndpoints. Ideal for embedding (web IDE, AI agent) and tests — no subprocess, no dart:io.

Implementation

factory LspClient.inProcess() {
  late final MessageLspEndpoint serverEndpoint;
  final clientEndpoint = MessageLspEndpoint(
    (msg) => serverEndpoint.receive(msg),
  );
  serverEndpoint = MessageLspEndpoint((msg) => clientEndpoint.receive(msg));

  LspServer(serverEndpoint).start();
  return LspClient(clientEndpoint)..start();
}