From 1a249fc4ec5c76ed36489e1ddfc8682d8d697cb6 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 19 Mar 2018 12:06:35 +0100 Subject: [PATCH] Serialize vscode.DocumentSelector --- .../mainThreadLanguageFeatures.ts | 39 +++++------ src/vs/workbench/api/node/extHost.protocol.ts | 43 +++++++----- .../api/node/extHostLanguageFeatures.ts | 70 ++++++++++++++----- 3 files changed, 95 insertions(+), 57 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts index b76f40b1fa9..abb4db5246d 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts @@ -7,7 +7,6 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable } from 'vs/base/common/lifecycle'; import { Emitter } from 'vs/base/common/event'; -import * as vscode from 'vscode'; import { ITextModel, ISingleEditOperation } from 'vs/editor/common/model'; import * as modes from 'vs/editor/common/modes'; import { WorkspaceSymbolProviderRegistry, IWorkspaceSymbolProvider } from 'vs/workbench/parts/search/common/search'; @@ -15,7 +14,7 @@ import { wireCancellationToken } from 'vs/base/common/async'; import { CancellationToken } from 'vs/base/common/cancellation'; import { Position as EditorPosition } from 'vs/editor/common/core/position'; import { Range as EditorRange } from 'vs/editor/common/core/range'; -import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ISerializedLanguageConfiguration, ISerializedRegExp, ISerializedIndentationRule, ISerializedOnEnterRule, LocationDto, SymbolInformationDto, CodeActionDto, reviveWorkspaceEditDto } from '../node/extHost.protocol'; +import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ISerializedLanguageConfiguration, ISerializedRegExp, ISerializedIndentationRule, ISerializedOnEnterRule, LocationDto, SymbolInformationDto, CodeActionDto, reviveWorkspaceEditDto, ISerializedDocumentFilter } from '../node/extHost.protocol'; import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry'; import { LanguageConfiguration, IndentationRule, OnEnterRule } from 'vs/editor/common/modes/languageConfiguration'; import { IHeapService } from './mainThreadHeapService'; @@ -97,7 +96,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- outline - $registerOutlineSupport(handle: number, selector: vscode.DocumentSelector): void { + $registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.DocumentSymbolProviderRegistry.register(toLanguageSelector(selector), { provideDocumentSymbols: (model: ITextModel, token: CancellationToken): Thenable => { return wireCancellationToken(token, this._proxy.$provideDocumentSymbols(handle, model.uri)).then(MainThreadLanguageFeatures._reviveSymbolInformationDto); @@ -107,7 +106,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- code lens - $registerCodeLensSupport(handle: number, selector: vscode.DocumentSelector, eventHandle: number): void { + $registerCodeLensSupport(handle: number, selector: ISerializedDocumentFilter[], eventHandle: number): void { const provider = { provideCodeLenses: (model: ITextModel, token: CancellationToken): modes.ICodeLensSymbol[] | Thenable => { @@ -136,7 +135,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- declaration - $registerDeclaractionSupport(handle: number, selector: vscode.DocumentSelector): void { + $registerDeclaractionSupport(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.DefinitionProviderRegistry.register(toLanguageSelector(selector), { provideDefinition: (model, position, token): Thenable => { return wireCancellationToken(token, this._proxy.$provideDefinition(handle, model.uri, position)).then(MainThreadLanguageFeatures._reviveLocationDto); @@ -144,7 +143,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha }); } - $registerImplementationSupport(handle: number, selector: vscode.DocumentSelector): void { + $registerImplementationSupport(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.ImplementationProviderRegistry.register(toLanguageSelector(selector), { provideImplementation: (model, position, token): Thenable => { return wireCancellationToken(token, this._proxy.$provideImplementation(handle, model.uri, position)).then(MainThreadLanguageFeatures._reviveLocationDto); @@ -152,7 +151,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha }); } - $registerTypeDefinitionSupport(handle: number, selector: vscode.DocumentSelector): void { + $registerTypeDefinitionSupport(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.TypeDefinitionProviderRegistry.register(toLanguageSelector(selector), { provideTypeDefinition: (model, position, token): Thenable => { return wireCancellationToken(token, this._proxy.$provideTypeDefinition(handle, model.uri, position)).then(MainThreadLanguageFeatures._reviveLocationDto); @@ -162,7 +161,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- extra info - $registerHoverProvider(handle: number, selector: vscode.DocumentSelector): void { + $registerHoverProvider(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.HoverProviderRegistry.register(toLanguageSelector(selector), { provideHover: (model: ITextModel, position: EditorPosition, token: CancellationToken): Thenable => { return wireCancellationToken(token, this._proxy.$provideHover(handle, model.uri, position)); @@ -172,7 +171,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- occurrences - $registerDocumentHighlightProvider(handle: number, selector: vscode.DocumentSelector): void { + $registerDocumentHighlightProvider(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.DocumentHighlightProviderRegistry.register(toLanguageSelector(selector), { provideDocumentHighlights: (model: ITextModel, position: EditorPosition, token: CancellationToken): Thenable => { return wireCancellationToken(token, this._proxy.$provideDocumentHighlights(handle, model.uri, position)); @@ -182,7 +181,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- references - $registerReferenceSupport(handle: number, selector: vscode.DocumentSelector): void { + $registerReferenceSupport(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.ReferenceProviderRegistry.register(toLanguageSelector(selector), { provideReferences: (model: ITextModel, position: EditorPosition, context: modes.ReferenceContext, token: CancellationToken): Thenable => { return wireCancellationToken(token, this._proxy.$provideReferences(handle, model.uri, position, context)).then(MainThreadLanguageFeatures._reviveLocationDto); @@ -192,7 +191,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- quick fix - $registerQuickFixSupport(handle: number, selector: vscode.DocumentSelector): void { + $registerQuickFixSupport(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.CodeActionProviderRegistry.register(toLanguageSelector(selector), { provideCodeActions: (model: ITextModel, range: EditorRange, context: modes.CodeActionContext, token: CancellationToken): Thenable => { return this._heapService.trackRecursive(wireCancellationToken(token, this._proxy.$provideCodeActions(handle, model.uri, range, context))).then(MainThreadLanguageFeatures._reviveCodeActionDto); @@ -202,7 +201,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- formatting - $registerDocumentFormattingSupport(handle: number, selector: vscode.DocumentSelector): void { + $registerDocumentFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.DocumentFormattingEditProviderRegistry.register(toLanguageSelector(selector), { provideDocumentFormattingEdits: (model: ITextModel, options: modes.FormattingOptions, token: CancellationToken): Thenable => { return wireCancellationToken(token, this._proxy.$provideDocumentFormattingEdits(handle, model.uri, options)); @@ -210,7 +209,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha }); } - $registerRangeFormattingSupport(handle: number, selector: vscode.DocumentSelector): void { + $registerRangeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.DocumentRangeFormattingEditProviderRegistry.register(toLanguageSelector(selector), { provideDocumentRangeFormattingEdits: (model: ITextModel, range: EditorRange, options: modes.FormattingOptions, token: CancellationToken): Thenable => { return wireCancellationToken(token, this._proxy.$provideDocumentRangeFormattingEdits(handle, model.uri, range, options)); @@ -218,7 +217,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha }); } - $registerOnTypeFormattingSupport(handle: number, selector: vscode.DocumentSelector, autoFormatTriggerCharacters: string[]): void { + $registerOnTypeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[], autoFormatTriggerCharacters: string[]): void { this._registrations[handle] = modes.OnTypeFormattingEditProviderRegistry.register(toLanguageSelector(selector), { autoFormatTriggerCharacters, @@ -251,7 +250,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- rename - $registerRenameSupport(handle: number, selector: vscode.DocumentSelector, supportsResolveInitialValues: boolean): void { + $registerRenameSupport(handle: number, selector: ISerializedDocumentFilter[], supportsResolveInitialValues: boolean): void { this._registrations[handle] = modes.RenameProviderRegistry.register(toLanguageSelector(selector), { provideRenameEdits: (model: ITextModel, position: EditorPosition, newName: string, token: CancellationToken): Thenable => { return wireCancellationToken(token, this._proxy.$provideRenameEdits(handle, model.uri, position, newName)).then(reviveWorkspaceEditDto); @@ -264,7 +263,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- suggest - $registerSuggestSupport(handle: number, selector: vscode.DocumentSelector, triggerCharacters: string[], supportsResolveDetails: boolean): void { + $registerSuggestSupport(handle: number, selector: ISerializedDocumentFilter[], triggerCharacters: string[], supportsResolveDetails: boolean): void { this._registrations[handle] = modes.SuggestRegistry.register(toLanguageSelector(selector), { triggerCharacters, provideCompletionItems: (model: ITextModel, position: EditorPosition, context: modes.SuggestContext, token: CancellationToken): Thenable => { @@ -287,7 +286,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- parameter hints - $registerSignatureHelpProvider(handle: number, selector: vscode.DocumentSelector, triggerCharacter: string[]): void { + $registerSignatureHelpProvider(handle: number, selector: ISerializedDocumentFilter[], triggerCharacter: string[]): void { this._registrations[handle] = modes.SignatureHelpProviderRegistry.register(toLanguageSelector(selector), { signatureHelpTriggerCharacters: triggerCharacter, @@ -301,7 +300,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- links - $registerDocumentLinkProvider(handle: number, selector: vscode.DocumentSelector): void { + $registerDocumentLinkProvider(handle: number, selector: ISerializedDocumentFilter[]): void { this._registrations[handle] = modes.LinkProviderRegistry.register(toLanguageSelector(selector), { provideLinks: (model, token) => { return this._heapService.trackRecursive(wireCancellationToken(token, this._proxy.$provideDocumentLinks(handle, model.uri))); @@ -314,7 +313,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- colors - $registerDocumentColorProvider(handle: number, selector: vscode.DocumentSelector): void { + $registerDocumentColorProvider(handle: number, selector: ISerializedDocumentFilter[]): void { const proxy = this._proxy; this._registrations[handle] = modes.ColorProviderRegistry.register(toLanguageSelector(selector), { provideDocumentColors: (model, token) => { @@ -348,7 +347,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- folding - $registerFoldingProvider(handle: number, selector: vscode.DocumentSelector): void { + $registerFoldingProvider(handle: number, selector: ISerializedDocumentFilter[]): void { const proxy = this._proxy; this._registrations[handle] = modes.FoldingProviderRegistry.register(toLanguageSelector(selector), { provideFoldingRanges: (model, context, token) => { diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 878ea29bb67..c843f1f02b0 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -257,28 +257,35 @@ export interface ISerializedLanguageConfiguration { }; } +export interface ISerializedDocumentFilter { + $serialized: true; + language?: string; + scheme?: string; + pattern?: vscode.GlobPattern; +} + export interface MainThreadLanguageFeaturesShape extends IDisposable { $unregister(handle: number): void; - $registerOutlineSupport(handle: number, selector: vscode.DocumentSelector): void; - $registerCodeLensSupport(handle: number, selector: vscode.DocumentSelector, eventHandle: number): void; + $registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerCodeLensSupport(handle: number, selector: ISerializedDocumentFilter[], eventHandle: number): void; $emitCodeLensEvent(eventHandle: number, event?: any): void; - $registerDeclaractionSupport(handle: number, selector: vscode.DocumentSelector): void; - $registerImplementationSupport(handle: number, selector: vscode.DocumentSelector): void; - $registerTypeDefinitionSupport(handle: number, selector: vscode.DocumentSelector): void; - $registerHoverProvider(handle: number, selector: vscode.DocumentSelector): void; - $registerDocumentHighlightProvider(handle: number, selector: vscode.DocumentSelector): void; - $registerReferenceSupport(handle: number, selector: vscode.DocumentSelector): void; - $registerQuickFixSupport(handle: number, selector: vscode.DocumentSelector): void; - $registerDocumentFormattingSupport(handle: number, selector: vscode.DocumentSelector): void; - $registerRangeFormattingSupport(handle: number, selector: vscode.DocumentSelector): void; - $registerOnTypeFormattingSupport(handle: number, selector: vscode.DocumentSelector, autoFormatTriggerCharacters: string[]): void; + $registerDeclaractionSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerImplementationSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerTypeDefinitionSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerHoverProvider(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerDocumentHighlightProvider(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerReferenceSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerQuickFixSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerDocumentFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerRangeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerOnTypeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[], autoFormatTriggerCharacters: string[]): void; $registerNavigateTypeSupport(handle: number): void; - $registerRenameSupport(handle: number, selector: vscode.DocumentSelector, supportsResolveInitialValues: boolean): void; - $registerSuggestSupport(handle: number, selector: vscode.DocumentSelector, triggerCharacters: string[], supportsResolveDetails: boolean): void; - $registerSignatureHelpProvider(handle: number, selector: vscode.DocumentSelector, triggerCharacter: string[]): void; - $registerDocumentLinkProvider(handle: number, selector: vscode.DocumentSelector): void; - $registerDocumentColorProvider(handle: number, selector: vscode.DocumentSelector): void; - $registerFoldingProvider(handle: number, selector: vscode.DocumentSelector): void; + $registerRenameSupport(handle: number, selector: ISerializedDocumentFilter[], supportsResolveInitialValues: boolean): void; + $registerSuggestSupport(handle: number, selector: ISerializedDocumentFilter[], triggerCharacters: string[], supportsResolveDetails: boolean): void; + $registerSignatureHelpProvider(handle: number, selector: ISerializedDocumentFilter[], triggerCharacter: string[]): void; + $registerDocumentLinkProvider(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerDocumentColorProvider(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerFoldingProvider(handle: number, selector: ISerializedDocumentFilter[]): void; $setLanguageConfiguration(handle: number, languageId: string, configuration: ISerializedLanguageConfiguration): void; } diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 96a11c1c30e..25d94916d2c 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -17,7 +17,7 @@ import { ExtHostDocuments } from 'vs/workbench/api/node/extHostDocuments'; import { ExtHostCommands, CommandsConverter } from 'vs/workbench/api/node/extHostCommands'; import { ExtHostDiagnostics } from 'vs/workbench/api/node/extHostDiagnostics'; import { asWinJsPromise } from 'vs/base/common/async'; -import { MainContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, ObjectIdentifier, IRawColorInfo, IMainContext, IdObject, ISerializedRegExp, ISerializedIndentationRule, ISerializedOnEnterRule, ISerializedLanguageConfiguration, SymbolInformationDto, SuggestResultDto, WorkspaceSymbolsDto, SuggestionDto, CodeActionDto } from './extHost.protocol'; +import { MainContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, ObjectIdentifier, IRawColorInfo, IMainContext, IdObject, ISerializedRegExp, ISerializedIndentationRule, ISerializedOnEnterRule, ISerializedLanguageConfiguration, SymbolInformationDto, SuggestResultDto, WorkspaceSymbolsDto, SuggestionDto, CodeActionDto, ISerializedDocumentFilter } from './extHost.protocol'; import { regExpLeadsToEndlessLoop } from 'vs/base/common/strings'; import { IPosition } from 'vs/editor/common/core/position'; import { IRange } from 'vs/editor/common/core/range'; @@ -852,6 +852,38 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { this._diagnostics = diagnostics; } + private _transformDocumentSelector(selector: vscode.DocumentSelector): ISerializedDocumentFilter[] { + if (Array.isArray(selector)) { + return selector.map(sel => this._doTransformDocumentSelector(sel)); + } + + return [this._doTransformDocumentSelector(selector)]; + } + + private _doTransformDocumentSelector(selector: string | vscode.DocumentFilter): ISerializedDocumentFilter { + if (typeof selector === 'string') { + return { + $serialized: true, + language: selector + }; + } + + if (selector) { + return { + $serialized: true, + language: selector.language, + scheme: this._transformScheme(selector.scheme), + pattern: selector.pattern + }; + } + + return undefined; + } + + private _transformScheme(scheme: string): string { + return scheme; + } + private _createDisposable(handle: number): Disposable { return new Disposable(() => { this._adapter.delete(handle); @@ -881,7 +913,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider): vscode.Disposable { const handle = this._addNewAdapter(new OutlineAdapter(this._documents, provider)); - this._proxy.$registerOutlineSupport(handle, selector); + this._proxy.$registerOutlineSupport(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -896,7 +928,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { const eventHandle = typeof provider.onDidChangeCodeLenses === 'function' ? this._nextHandle() : undefined; this._adapter.set(handle, new CodeLensAdapter(this._documents, this._commands.converter, this._heapService, provider)); - this._proxy.$registerCodeLensSupport(handle, selector, eventHandle); + this._proxy.$registerCodeLensSupport(handle, this._transformDocumentSelector(selector), eventHandle); let result = this._createDisposable(handle); if (eventHandle !== undefined) { @@ -919,7 +951,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.DefinitionProvider): vscode.Disposable { const handle = this._addNewAdapter(new DefinitionAdapter(this._documents, provider)); - this._proxy.$registerDeclaractionSupport(handle, selector); + this._proxy.$registerDeclaractionSupport(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -929,7 +961,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerImplementationProvider(selector: vscode.DocumentSelector, provider: vscode.ImplementationProvider): vscode.Disposable { const handle = this._addNewAdapter(new ImplementationAdapter(this._documents, provider)); - this._proxy.$registerImplementationSupport(handle, selector); + this._proxy.$registerImplementationSupport(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -939,7 +971,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerTypeDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.TypeDefinitionProvider): vscode.Disposable { const handle = this._addNewAdapter(new TypeDefinitionAdapter(this._documents, provider)); - this._proxy.$registerTypeDefinitionSupport(handle, selector); + this._proxy.$registerTypeDefinitionSupport(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -951,7 +983,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerHoverProvider(selector: vscode.DocumentSelector, provider: vscode.HoverProvider, extensionId?: string): vscode.Disposable { const handle = this._addNewAdapter(new HoverAdapter(this._documents, provider)); - this._proxy.$registerHoverProvider(handle, selector); + this._proxy.$registerHoverProvider(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -963,7 +995,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerDocumentHighlightProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentHighlightProvider): vscode.Disposable { const handle = this._addNewAdapter(new DocumentHighlightAdapter(this._documents, provider)); - this._proxy.$registerDocumentHighlightProvider(handle, selector); + this._proxy.$registerDocumentHighlightProvider(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -975,7 +1007,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerReferenceProvider(selector: vscode.DocumentSelector, provider: vscode.ReferenceProvider): vscode.Disposable { const handle = this._addNewAdapter(new ReferenceAdapter(this._documents, provider)); - this._proxy.$registerReferenceSupport(handle, selector); + this._proxy.$registerReferenceSupport(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -987,7 +1019,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerCodeActionProvider(selector: vscode.DocumentSelector, provider: vscode.CodeActionProvider): vscode.Disposable { const handle = this._addNewAdapter(new CodeActionAdapter(this._documents, this._commands.converter, this._diagnostics, provider)); - this._proxy.$registerQuickFixSupport(handle, selector); + this._proxy.$registerQuickFixSupport(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -1000,7 +1032,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerDocumentFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentFormattingEditProvider): vscode.Disposable { const handle = this._addNewAdapter(new DocumentFormattingAdapter(this._documents, provider)); - this._proxy.$registerDocumentFormattingSupport(handle, selector); + this._proxy.$registerDocumentFormattingSupport(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -1010,7 +1042,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerDocumentRangeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentRangeFormattingEditProvider): vscode.Disposable { const handle = this._addNewAdapter(new RangeFormattingAdapter(this._documents, provider)); - this._proxy.$registerRangeFormattingSupport(handle, selector); + this._proxy.$registerRangeFormattingSupport(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -1020,7 +1052,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerOnTypeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.OnTypeFormattingEditProvider, triggerCharacters: string[]): vscode.Disposable { const handle = this._addNewAdapter(new OnTypeFormattingAdapter(this._documents, provider)); - this._proxy.$registerOnTypeFormattingSupport(handle, selector, triggerCharacters); + this._proxy.$registerOnTypeFormattingSupport(handle, this._transformDocumentSelector(selector), triggerCharacters); return this._createDisposable(handle); } @@ -1052,7 +1084,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerRenameProvider(selector: vscode.DocumentSelector, provider: vscode.RenameProvider, canUseProposedApi = false): vscode.Disposable { const handle = this._addNewAdapter(new RenameAdapter(this._documents, provider)); - this._proxy.$registerRenameSupport(handle, selector, canUseProposedApi && RenameAdapter.supportsResolving(provider)); + this._proxy.$registerRenameSupport(handle, this._transformDocumentSelector(selector), canUseProposedApi && RenameAdapter.supportsResolving(provider)); return this._createDisposable(handle); } @@ -1068,7 +1100,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerCompletionItemProvider(selector: vscode.DocumentSelector, provider: vscode.CompletionItemProvider, triggerCharacters: string[]): vscode.Disposable { const handle = this._addNewAdapter(new SuggestAdapter(this._documents, this._commands.converter, provider)); - this._proxy.$registerSuggestSupport(handle, selector, triggerCharacters, SuggestAdapter.supportsResolving(provider)); + this._proxy.$registerSuggestSupport(handle, this._transformDocumentSelector(selector), triggerCharacters, SuggestAdapter.supportsResolving(provider)); return this._createDisposable(handle); } @@ -1088,7 +1120,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerSignatureHelpProvider(selector: vscode.DocumentSelector, provider: vscode.SignatureHelpProvider, triggerCharacters: string[]): vscode.Disposable { const handle = this._addNewAdapter(new SignatureHelpAdapter(this._documents, provider)); - this._proxy.$registerSignatureHelpProvider(handle, selector, triggerCharacters); + this._proxy.$registerSignatureHelpProvider(handle, this._transformDocumentSelector(selector), triggerCharacters); return this._createDisposable(handle); } @@ -1100,7 +1132,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerDocumentLinkProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentLinkProvider): vscode.Disposable { const handle = this._addNewAdapter(new LinkProviderAdapter(this._documents, this._heapService, provider)); - this._proxy.$registerDocumentLinkProvider(handle, selector); + this._proxy.$registerDocumentLinkProvider(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -1114,7 +1146,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerColorProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentColorProvider): vscode.Disposable { const handle = this._addNewAdapter(new ColorProviderAdapter(this._documents, provider)); - this._proxy.$registerDocumentColorProvider(handle, selector); + this._proxy.$registerDocumentColorProvider(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } @@ -1128,7 +1160,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { registerFoldingProvider(selector: vscode.DocumentSelector, provider: vscode.FoldingProvider): vscode.Disposable { const handle = this._addNewAdapter(new FoldingProviderAdapter(this._documents, provider)); - this._proxy.$registerFoldingProvider(handle, selector); + this._proxy.$registerFoldingProvider(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); }