vscode-languageclient
Advanced tools
Comparing version 8.1.0-next.5 to 8.1.0-next.6
@@ -293,2 +293,3 @@ import { TextDocument, Disposable, OutputChannel, DiagnosticCollection, Diagnostic as VDiagnostic, Uri, CancellationToken, WorkspaceFolder as VWorkspaceFolder, FileCreateEvent, FileRenameEvent, FileDeleteEvent, FileWillCreateEvent, FileWillRenameEvent, FileWillDeleteEvent, CompletionItemProvider, HoverProvider, SignatureHelpProvider, DefinitionProvider, ReferenceProvider, DocumentHighlightProvider, CodeActionProvider, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, OnTypeFormattingEditProvider, RenameProvider, DocumentSymbolProvider, DocumentLinkProvider, DeclarationProvider, FoldingRangeProvider, ImplementationProvider, DocumentColorProvider, SelectionRangeProvider, TypeDefinitionProvider, CallHierarchyProvider, LinkedEditingRangeProvider, TypeHierarchyProvider, WorkspaceSymbolProvider, ProviderResult, TextEdit as VTextEdit } from 'vscode'; | ||
private _didChangeTextDocumentFeature; | ||
private readonly _pendingOpenNotifications; | ||
private readonly _pendingChangeSemaphore; | ||
@@ -295,0 +296,0 @@ private readonly _pendingChangeDelayer; |
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, TextDocumentSyncOptions, WillSaveTextDocumentParams } from 'vscode-languageserver-protocol'; | ||
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, NotificationSendEvent } from './features'; | ||
@@ -51,5 +51,7 @@ export interface TextDocumentSynchronizationMiddleware { | ||
private readonly _pendingTextDocumentChanges; | ||
private _syncKind; | ||
constructor(client: FeatureClient<TextDocumentSynchronizationMiddleware>, pendingTextDocumentChanges: Map<string, TextDocument>); | ||
get onNotificationSent(): Event<NotificationSendEvent<DidChangeTextDocumentParams>>; | ||
get onPendingChangeAdded(): Event<void>; | ||
get syncKind(): TextDocumentSyncKind; | ||
get registrationType(): RegistrationType<TextDocumentChangeRegistrationOptions>; | ||
@@ -64,6 +66,7 @@ fillClientCapabilities(capabilities: ClientCapabilities): void; | ||
dispose(): void; | ||
getPendingDocumentChanges(exclude?: string): TextDocument[]; | ||
getPendingDocumentChanges(excludes: Set<string>): TextDocument[]; | ||
getProvider(document: TextDocument): { | ||
send: (event: TextDocumentChangeEvent) => Promise<void>; | ||
} | undefined; | ||
private updateSyncKind; | ||
} | ||
@@ -70,0 +73,0 @@ export declare class WillSaveFeature extends TextDocumentEventFeature<WillSaveTextDocumentParams, TextDocumentWillSaveEvent, TextDocumentSynchronizationMiddleware> { |
@@ -121,2 +121,3 @@ "use strict"; | ||
this._pendingTextDocumentChanges = pendingTextDocumentChanges; | ||
this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None; | ||
} | ||
@@ -129,2 +130,5 @@ get onNotificationSent() { | ||
} | ||
get syncKind() { | ||
return this._syncKind; | ||
} | ||
get registrationType() { | ||
@@ -156,2 +160,3 @@ return vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type; | ||
}); | ||
this.updateSyncKind(data.registerOptions.syncKind); | ||
} | ||
@@ -206,6 +211,18 @@ *getDocumentSelectors() { | ||
this._changeData.delete(id); | ||
if (this._changeData.size === 0 && this._listener) { | ||
this._listener.dispose(); | ||
this._listener = undefined; | ||
if (this._changeData.size === 0) { | ||
if (this._listener) { | ||
this._listener.dispose(); | ||
this._listener = undefined; | ||
} | ||
this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None; | ||
} | ||
else { | ||
this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None; | ||
for (const changeData of this._changeData.values()) { | ||
this.updateSyncKind(changeData.syncKind); | ||
if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) { | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
@@ -215,2 +232,3 @@ dispose() { | ||
this._changeData.clear(); | ||
this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None; | ||
if (this._listener) { | ||
@@ -221,3 +239,3 @@ this._listener.dispose(); | ||
} | ||
getPendingDocumentChanges(exclude) { | ||
getPendingDocumentChanges(excludes) { | ||
if (this._pendingTextDocumentChanges.size === 0) { | ||
@@ -227,3 +245,3 @@ return []; | ||
let result; | ||
if (exclude === undefined) { | ||
if (excludes.size === 0) { | ||
result = Array.from(this._pendingTextDocumentChanges.values()); | ||
@@ -235,3 +253,3 @@ this._pendingTextDocumentChanges.clear(); | ||
for (const entry of this._pendingTextDocumentChanges) { | ||
if (entry[0] !== exclude) { | ||
if (!excludes.has(entry[0])) { | ||
result.push(entry[1]); | ||
@@ -256,2 +274,17 @@ this._pendingTextDocumentChanges.delete(entry[0]); | ||
} | ||
updateSyncKind(syncKind) { | ||
if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) { | ||
return; | ||
} | ||
switch (syncKind) { | ||
case vscode_languageserver_protocol_1.TextDocumentSyncKind.Full: | ||
this._syncKind = syncKind; | ||
break; | ||
case vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental: | ||
if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.None) { | ||
this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental; | ||
} | ||
break; | ||
} | ||
} | ||
} | ||
@@ -258,0 +291,0 @@ exports.DidChangeTextDocumentFeature = DidChangeTextDocumentFeature; |
{ | ||
"name": "vscode-languageclient", | ||
"description": "VSCode Language client implementation", | ||
"version": "8.1.0-next.5", | ||
"version": "8.1.0-next.6", | ||
"author": "Microsoft Corporation", | ||
@@ -33,3 +33,3 @@ "license": "MIT", | ||
"semver": "^7.3.7", | ||
"vscode-languageserver-protocol": "3.17.3-next.5" | ||
"vscode-languageserver-protocol": "3.17.3-next.6" | ||
}, | ||
@@ -36,0 +36,0 @@ "scripts": { |
Sorry, the diff of this file is too big to display
633798
12654
+ Addedvscode-jsonrpc@8.1.0-next.7(transitive)
+ Addedvscode-languageserver-protocol@3.17.3-next.6(transitive)
+ Addedvscode-languageserver-types@3.17.3-next.3(transitive)
- Removedvscode-jsonrpc@8.1.0-next.6(transitive)
- Removedvscode-languageserver-protocol@3.17.3-next.5(transitive)
- Removedvscode-languageserver-types@3.17.3-next.2(transitive)