LspClient class
A client for the ApolloVM LspServer.
Send requests with the typed helpers (hover, definition, completion, …) or the low-level sendRequest/sendNotification, and listen for server-pushed diagnostics on diagnostics.
final client = LspClient.inProcess(); // client + server, same isolate
await client.initialize();
client.initialized();
client.diagnostics.listen((d) => print('${d.uri}: ${d.diagnostics.length}'));
client.didOpen('file:///Foo.dart', source);
final hover = await client.hover('file:///Foo.dart', Position(2, 13));
For an out-of-process server, wrap its transport instead:
final client = LspClient(StreamLspEndpoint(proc.stdout, proc.stdin))..start();
Constructors
- LspClient(LspEndpoint _endpoint)
-
Wraps an existing endpoint. Call start before exchanging messages so a
stream-based endpoint begins reading; message-based endpoints deliver
incoming messages through their own
receive. - 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.factory
Properties
-
diagnostics
→ Stream<
PublishDiagnosticsParams> -
Server-pushed
textDocument/publishDiagnosticsnotifications.no setter -
done
→ Future<
void> -
Completes when the transport closes.
no setter
- endpoint → LspEndpoint
-
The underlying transport.
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- onNotification ↔ NotificationHandler?
-
Optional sink for every incoming notification, called after built-in
handling (e.g. diagnostics are still delivered to diagnostics).
getter/setter pair
- onServerRequest ↔ ServerRequestHandler?
-
Optional handler for requests the server sends to the client. When null,
such requests are answered with a
methodNotFounderror.getter/setter pair - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
completion(
String uri, Position position) → Future< CompletionList> -
Completion proposals at
positioninuri. -
definition(
String uri, Position position) → Future< Location?> -
The declaration location for the symbol at
position, or null. -
didChange(
String uri, String text, {int? version}) → void -
Replaces the whole content of
uriwithtext(a full-document change). -
didClose(
String uri) → void -
Closes
uri; the server clears its diagnostics. -
didOpen(
String uri, String text, {String languageId = 'dart', int version = 1}) → void -
Opens
uriwithtext. Diagnostics arrive on diagnostics. -
dispose(
) → Future< void> -
Releases resources: fails any in-flight requests and closes diagnostics.
Does not itself send
shutdown/exit— call those first for a clean stop. -
documentHighlight(
String uri, Position position) → Future< List< DocumentHighlight> > -
Every occurrence to highlight for the symbol at
positioninuri. -
documentSymbol(
String uri) → Future< List< DocumentSymbol> > -
The document outline (hierarchical DocumentSymbols) for
uri. -
exit(
) → void -
Tells the server to
exit. -
hover(
String uri, Position position) → Future< Hover?> -
Hover information at
positioninuri, or null if none. -
initialize(
{Map< String, Object?> ? capabilities, String? rootUri, Map<String, Object?> ? initializationOptions}) → Future<InitializeResult> -
Performs the
initializehandshake and returns the server's capabilities. Follow with initialized once ready. -
initialized(
) → void - Notifies the server the client is ready (sent after initialize).
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
prepareRename(
String uri, Position position) → Future< PrepareRenameResult?> -
Checks whether the symbol at
positioncan be renamed, returning its range and current text, or null if it cannot (no identifier under the cursor). -
references(
String uri, Position position, {bool includeDeclaration = true}) → Future< List< Location> > -
All references to the symbol at
positioninuri. -
rename(
String uri, Position position, String newName) → Future< WorkspaceEdit?> -
A WorkspaceEdit renaming the symbol at
positiontonewName, or null. -
sendNotification(
String method, [Object? params]) → void - Sends a fire-and-forget notification.
-
sendRequest(
String method, [Object? params]) → Future< Object?> -
Sends a request and completes with its
result, or completes with a ResponseError if the server replied with an error. -
shutdown(
) → Future< void> -
Requests a graceful
shutdown; pair with exit. -
start(
) → void - Begins consuming the transport (no-op for message-based endpoints).
-
toString(
) → String -
A string representation of this object.
inherited
-
workspaceSymbol(
String query) → Future< List< WorkspaceSymbol> > -
Workspace-wide symbols matching
query(empty matches all).
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited