vscode-languageclient
Version:
VSCode Language client implementation
125 lines (124 loc) • 9.16 kB
TypeScript
import { TextDocument, TextDocumentChangeEvent, TextDocumentWillSaveEvent, TextEdit as VTextEdit, DocumentSelector as VDocumentSelector, Event } from 'vscode';
import { ClientCapabilities, DidChangeTextDocumentParams, DidCloseTextDocumentParams, DidOpenTextDocumentParams, DidSaveTextDocumentParams, DocumentSelector, ProtocolNotificationType, RegistrationType, ServerCapabilities, TextDocumentChangeRegistrationOptions, TextDocumentRegistrationOptions, TextDocumentSaveRegistrationOptions, TextDocumentSyncKind, TextDocumentSyncOptions, WillSaveTextDocumentParams } from 'vscode-languageserver-protocol';
import { FeatureClient, TextDocumentEventFeature, DynamicFeature, NextSignature, TextDocumentSendFeature, NotifyingFeature, RegistrationData, DynamicDocumentFeature, NotificationSentEvent, AboutToSendNotificationEvent } from './features';
export interface TextDocumentSynchronizationMiddleware {
didOpen?: NextSignature<TextDocument, Promise<void>>;
didChange?: NextSignature<TextDocumentChangeEvent, Promise<void>>;
willSave?: NextSignature<TextDocumentWillSaveEvent, Promise<void>>;
willSaveWaitUntil?: NextSignature<TextDocumentWillSaveEvent, Thenable<VTextEdit[]>>;
didSave?: NextSignature<TextDocument, Promise<void>>;
didClose?: NextSignature<TextDocument, Promise<void>>;
}
export interface DidOpenTextDocumentFeatureShape extends DynamicFeature<TextDocumentRegistrationOptions>, TextDocumentSendFeature<(textDocument: TextDocument) => Promise<void>>, NotifyingFeature<DidOpenTextDocumentParams> {
openDocuments: Iterable<TextDocument>;
}
export type ResolvedTextDocumentSyncCapabilities = {
resolvedTextDocumentSync?: TextDocumentSyncOptions;
};
type $ConfigurationOptions = {
textSynchronization?: {
delayOpenNotifications?: boolean;
};
};
export declare class DidOpenTextDocumentFeature extends TextDocumentEventFeature<DidOpenTextDocumentParams, TextDocument, TextDocumentSynchronizationMiddleware> implements DidOpenTextDocumentFeatureShape {
private readonly _syncedDocuments;
private readonly _pendingOpenNotifications;
private readonly _delayOpen;
private _pendingOpenListeners;
constructor(client: FeatureClient<TextDocumentSynchronizationMiddleware, $ConfigurationOptions>, syncedDocuments: Map<string, TextDocument>);
protected callback(document: TextDocument): Promise<void>;
get openDocuments(): IterableIterator<TextDocument>;
fillClientCapabilities(capabilities: ClientCapabilities): void;
initialize(capabilities: ServerCapabilities, documentSelector: DocumentSelector): void;
get registrationType(): RegistrationType<TextDocumentRegistrationOptions>;
register(data: RegistrationData<TextDocumentRegistrationOptions>): void;
/**
* Sends any pending open notifications unless they are for the document
* being closed.
*
* @param closingDocument The document being closed.
* @returns Whether a pending open notification was dropped because it was
* for the closing document.
*/
sendPendingOpenNotifications(closingDocument?: string): Promise<boolean>;
protected getTextDocument(data: TextDocument): TextDocument;
protected notificationSent(textDocument: TextDocument, type: ProtocolNotificationType<DidOpenTextDocumentParams, TextDocumentRegistrationOptions>, params: DidOpenTextDocumentParams): void;
clear(): void;
}
export interface DidCloseTextDocumentFeatureShape extends DynamicFeature<TextDocumentRegistrationOptions>, TextDocumentSendFeature<(textDocument: TextDocument) => Promise<void>>, NotifyingFeature<DidCloseTextDocumentParams> {
}
export declare class DidCloseTextDocumentFeature extends TextDocumentEventFeature<DidCloseTextDocumentParams, TextDocument, TextDocumentSynchronizationMiddleware> implements DidCloseTextDocumentFeatureShape {
private readonly _syncedDocuments;
private readonly _pendingTextDocumentChanges;
constructor(client: FeatureClient<TextDocumentSynchronizationMiddleware>, syncedDocuments: Map<string, TextDocument>, pendingTextDocumentChanges: Map<string, TextDocument>);
get registrationType(): RegistrationType<TextDocumentRegistrationOptions>;
fillClientCapabilities(capabilities: ClientCapabilities): void;
initialize(capabilities: ServerCapabilities, documentSelector: DocumentSelector): void;
protected callback(data: TextDocument): Promise<void>;
protected getTextDocument(data: TextDocument): TextDocument;
protected notificationSent(textDocument: TextDocument, type: ProtocolNotificationType<DidCloseTextDocumentParams, TextDocumentRegistrationOptions>, params: DidCloseTextDocumentParams): void;
unregister(id: string): void;
}
export interface DidChangeTextDocumentFeatureShape extends DynamicFeature<TextDocumentChangeRegistrationOptions>, TextDocumentSendFeature<(event: TextDocumentChangeEvent) => Promise<void>>, NotifyingFeature<DidChangeTextDocumentParams> {
}
export declare class DidChangeTextDocumentFeature extends DynamicDocumentFeature<TextDocumentChangeRegistrationOptions, TextDocumentSynchronizationMiddleware> implements DidChangeTextDocumentFeatureShape {
private _listener;
private readonly _changeData;
private readonly _onAboutToSendNotification;
private readonly _onNotificationSent;
private readonly _onPendingChangeAdded;
private readonly _pendingTextDocumentChanges;
private _syncKind;
constructor(client: FeatureClient<TextDocumentSynchronizationMiddleware>, pendingTextDocumentChanges: Map<string, TextDocument>);
get onAboutToSendNotification(): Event<AboutToSendNotificationEvent<DidChangeTextDocumentParams>>;
get onNotificationSent(): Event<NotificationSentEvent<DidChangeTextDocumentParams>>;
get onPendingChangeAdded(): Event<void>;
get syncKind(): TextDocumentSyncKind;
get registrationType(): RegistrationType<TextDocumentChangeRegistrationOptions>;
fillClientCapabilities(capabilities: ClientCapabilities): void;
initialize(capabilities: ServerCapabilities, documentSelector: DocumentSelector): void;
register(data: RegistrationData<TextDocumentChangeRegistrationOptions>): void;
getDocumentSelectors(): IterableIterator<VDocumentSelector>;
private callback;
aboutToSendNotification(textDocument: TextDocument, type: ProtocolNotificationType<DidChangeTextDocumentParams, TextDocumentRegistrationOptions>, params: DidChangeTextDocumentParams): void;
notificationSent(textDocument: TextDocument, type: ProtocolNotificationType<DidChangeTextDocumentParams, TextDocumentRegistrationOptions>, params: DidChangeTextDocumentParams): void;
unregister(id: string): void;
clear(): void;
getPendingDocumentChanges(excludes: Set<string>): TextDocument[];
getProvider(document: TextDocument): {
send: (event: TextDocumentChangeEvent) => Promise<void>;
} | undefined;
private updateSyncKind;
}
export declare class WillSaveFeature extends TextDocumentEventFeature<WillSaveTextDocumentParams, TextDocumentWillSaveEvent, TextDocumentSynchronizationMiddleware> {
constructor(client: FeatureClient<TextDocumentSynchronizationMiddleware>);
get registrationType(): RegistrationType<TextDocumentRegistrationOptions>;
fillClientCapabilities(capabilities: ClientCapabilities): void;
initialize(capabilities: ServerCapabilities, documentSelector: DocumentSelector): void;
protected getTextDocument(data: TextDocumentWillSaveEvent): TextDocument;
}
export declare class WillSaveWaitUntilFeature extends DynamicDocumentFeature<TextDocumentRegistrationOptions, TextDocumentSynchronizationMiddleware> {
private _listener;
private readonly _selectors;
constructor(client: FeatureClient<TextDocumentSynchronizationMiddleware>);
protected getDocumentSelectors(): IterableIterator<VDocumentSelector>;
get registrationType(): RegistrationType<TextDocumentRegistrationOptions>;
fillClientCapabilities(capabilities: ClientCapabilities): void;
initialize(capabilities: ServerCapabilities, documentSelector: DocumentSelector): void;
register(data: RegistrationData<TextDocumentRegistrationOptions>): void;
private callback;
unregister(id: string): void;
clear(): void;
}
export interface DidSaveTextDocumentFeatureShape extends DynamicFeature<TextDocumentRegistrationOptions>, TextDocumentSendFeature<(textDocument: TextDocument) => Promise<void>>, NotifyingFeature<DidSaveTextDocumentParams> {
}
export declare class DidSaveTextDocumentFeature extends TextDocumentEventFeature<DidSaveTextDocumentParams, TextDocument, TextDocumentSynchronizationMiddleware> implements DidSaveTextDocumentFeatureShape {
private _includeText;
constructor(client: FeatureClient<TextDocumentSynchronizationMiddleware>);
get registrationType(): RegistrationType<TextDocumentSaveRegistrationOptions>;
fillClientCapabilities(capabilities: ClientCapabilities): void;
initialize(capabilities: ServerCapabilities, documentSelector: DocumentSelector): void;
register(data: RegistrationData<TextDocumentSaveRegistrationOptions>): void;
protected getTextDocument(data: TextDocument): TextDocument;
}
export {};