Skip to content

Commit 1a249fc

Browse files
committed
Serialize vscode.DocumentSelector
1 parent 984a84a commit 1a249fc

3 files changed

Lines changed: 95 additions & 57 deletions

File tree

src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@
77
import { TPromise } from 'vs/base/common/winjs.base';
88
import { IDisposable } from 'vs/base/common/lifecycle';
99
import { Emitter } from 'vs/base/common/event';
10-
import * as vscode from 'vscode';
1110
import { ITextModel, ISingleEditOperation } from 'vs/editor/common/model';
1211
import * as modes from 'vs/editor/common/modes';
1312
import { WorkspaceSymbolProviderRegistry, IWorkspaceSymbolProvider } from 'vs/workbench/parts/search/common/search';
1413
import { wireCancellationToken } from 'vs/base/common/async';
1514
import { CancellationToken } from 'vs/base/common/cancellation';
1615
import { Position as EditorPosition } from 'vs/editor/common/core/position';
1716
import { Range as EditorRange } from 'vs/editor/common/core/range';
18-
import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ISerializedLanguageConfiguration, ISerializedRegExp, ISerializedIndentationRule, ISerializedOnEnterRule, LocationDto, SymbolInformationDto, CodeActionDto, reviveWorkspaceEditDto } from '../node/extHost.protocol';
17+
import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ISerializedLanguageConfiguration, ISerializedRegExp, ISerializedIndentationRule, ISerializedOnEnterRule, LocationDto, SymbolInformationDto, CodeActionDto, reviveWorkspaceEditDto, ISerializedDocumentFilter } from '../node/extHost.protocol';
1918
import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry';
2019
import { LanguageConfiguration, IndentationRule, OnEnterRule } from 'vs/editor/common/modes/languageConfiguration';
2120
import { IHeapService } from './mainThreadHeapService';
@@ -97,7 +96,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
9796

9897
// --- outline
9998

100-
$registerOutlineSupport(handle: number, selector: vscode.DocumentSelector): void {
99+
$registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[]): void {
101100
this._registrations[handle] = modes.DocumentSymbolProviderRegistry.register(toLanguageSelector(selector), <modes.DocumentSymbolProvider>{
102101
provideDocumentSymbols: (model: ITextModel, token: CancellationToken): Thenable<modes.SymbolInformation[]> => {
103102
return wireCancellationToken(token, this._proxy.$provideDocumentSymbols(handle, model.uri)).then(MainThreadLanguageFeatures._reviveSymbolInformationDto);
@@ -107,7 +106,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
107106

108107
// --- code lens
109108

110-
$registerCodeLensSupport(handle: number, selector: vscode.DocumentSelector, eventHandle: number): void {
109+
$registerCodeLensSupport(handle: number, selector: ISerializedDocumentFilter[], eventHandle: number): void {
111110

112111
const provider = <modes.CodeLensProvider>{
113112
provideCodeLenses: (model: ITextModel, token: CancellationToken): modes.ICodeLensSymbol[] | Thenable<modes.ICodeLensSymbol[]> => {
@@ -136,23 +135,23 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
136135

137136
// --- declaration
138137

139-
$registerDeclaractionSupport(handle: number, selector: vscode.DocumentSelector): void {
138+
$registerDeclaractionSupport(handle: number, selector: ISerializedDocumentFilter[]): void {
140139
this._registrations[handle] = modes.DefinitionProviderRegistry.register(toLanguageSelector(selector), <modes.DefinitionProvider>{
141140
provideDefinition: (model, position, token): Thenable<modes.Definition> => {
142141
return wireCancellationToken(token, this._proxy.$provideDefinition(handle, model.uri, position)).then(MainThreadLanguageFeatures._reviveLocationDto);
143142
}
144143
});
145144
}
146145

147-
$registerImplementationSupport(handle: number, selector: vscode.DocumentSelector): void {
146+
$registerImplementationSupport(handle: number, selector: ISerializedDocumentFilter[]): void {
148147
this._registrations[handle] = modes.ImplementationProviderRegistry.register(toLanguageSelector(selector), <modes.ImplementationProvider>{
149148
provideImplementation: (model, position, token): Thenable<modes.Definition> => {
150149
return wireCancellationToken(token, this._proxy.$provideImplementation(handle, model.uri, position)).then(MainThreadLanguageFeatures._reviveLocationDto);
151150
}
152151
});
153152
}
154153

155-
$registerTypeDefinitionSupport(handle: number, selector: vscode.DocumentSelector): void {
154+
$registerTypeDefinitionSupport(handle: number, selector: ISerializedDocumentFilter[]): void {
156155
this._registrations[handle] = modes.TypeDefinitionProviderRegistry.register(toLanguageSelector(selector), <modes.TypeDefinitionProvider>{
157156
provideTypeDefinition: (model, position, token): Thenable<modes.Definition> => {
158157
return wireCancellationToken(token, this._proxy.$provideTypeDefinition(handle, model.uri, position)).then(MainThreadLanguageFeatures._reviveLocationDto);
@@ -162,7 +161,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
162161

163162
// --- extra info
164163

165-
$registerHoverProvider(handle: number, selector: vscode.DocumentSelector): void {
164+
$registerHoverProvider(handle: number, selector: ISerializedDocumentFilter[]): void {
166165
this._registrations[handle] = modes.HoverProviderRegistry.register(toLanguageSelector(selector), <modes.HoverProvider>{
167166
provideHover: (model: ITextModel, position: EditorPosition, token: CancellationToken): Thenable<modes.Hover> => {
168167
return wireCancellationToken(token, this._proxy.$provideHover(handle, model.uri, position));
@@ -172,7 +171,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
172171

173172
// --- occurrences
174173

175-
$registerDocumentHighlightProvider(handle: number, selector: vscode.DocumentSelector): void {
174+
$registerDocumentHighlightProvider(handle: number, selector: ISerializedDocumentFilter[]): void {
176175
this._registrations[handle] = modes.DocumentHighlightProviderRegistry.register(toLanguageSelector(selector), <modes.DocumentHighlightProvider>{
177176
provideDocumentHighlights: (model: ITextModel, position: EditorPosition, token: CancellationToken): Thenable<modes.DocumentHighlight[]> => {
178177
return wireCancellationToken(token, this._proxy.$provideDocumentHighlights(handle, model.uri, position));
@@ -182,7 +181,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
182181

183182
// --- references
184183

185-
$registerReferenceSupport(handle: number, selector: vscode.DocumentSelector): void {
184+
$registerReferenceSupport(handle: number, selector: ISerializedDocumentFilter[]): void {
186185
this._registrations[handle] = modes.ReferenceProviderRegistry.register(toLanguageSelector(selector), <modes.ReferenceProvider>{
187186
provideReferences: (model: ITextModel, position: EditorPosition, context: modes.ReferenceContext, token: CancellationToken): Thenable<modes.Location[]> => {
188187
return wireCancellationToken(token, this._proxy.$provideReferences(handle, model.uri, position, context)).then(MainThreadLanguageFeatures._reviveLocationDto);
@@ -192,7 +191,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
192191

193192
// --- quick fix
194193

195-
$registerQuickFixSupport(handle: number, selector: vscode.DocumentSelector): void {
194+
$registerQuickFixSupport(handle: number, selector: ISerializedDocumentFilter[]): void {
196195
this._registrations[handle] = modes.CodeActionProviderRegistry.register(toLanguageSelector(selector), <modes.CodeActionProvider>{
197196
provideCodeActions: (model: ITextModel, range: EditorRange, context: modes.CodeActionContext, token: CancellationToken): Thenable<modes.CodeAction[]> => {
198197
return this._heapService.trackRecursive(wireCancellationToken(token, this._proxy.$provideCodeActions(handle, model.uri, range, context))).then(MainThreadLanguageFeatures._reviveCodeActionDto);
@@ -202,23 +201,23 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
202201

203202
// --- formatting
204203

205-
$registerDocumentFormattingSupport(handle: number, selector: vscode.DocumentSelector): void {
204+
$registerDocumentFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void {
206205
this._registrations[handle] = modes.DocumentFormattingEditProviderRegistry.register(toLanguageSelector(selector), <modes.DocumentFormattingEditProvider>{
207206
provideDocumentFormattingEdits: (model: ITextModel, options: modes.FormattingOptions, token: CancellationToken): Thenable<ISingleEditOperation[]> => {
208207
return wireCancellationToken(token, this._proxy.$provideDocumentFormattingEdits(handle, model.uri, options));
209208
}
210209
});
211210
}
212211

213-
$registerRangeFormattingSupport(handle: number, selector: vscode.DocumentSelector): void {
212+
$registerRangeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void {
214213
this._registrations[handle] = modes.DocumentRangeFormattingEditProviderRegistry.register(toLanguageSelector(selector), <modes.DocumentRangeFormattingEditProvider>{
215214
provideDocumentRangeFormattingEdits: (model: ITextModel, range: EditorRange, options: modes.FormattingOptions, token: CancellationToken): Thenable<ISingleEditOperation[]> => {
216215
return wireCancellationToken(token, this._proxy.$provideDocumentRangeFormattingEdits(handle, model.uri, range, options));
217216
}
218217
});
219218
}
220219

221-
$registerOnTypeFormattingSupport(handle: number, selector: vscode.DocumentSelector, autoFormatTriggerCharacters: string[]): void {
220+
$registerOnTypeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[], autoFormatTriggerCharacters: string[]): void {
222221
this._registrations[handle] = modes.OnTypeFormattingEditProviderRegistry.register(toLanguageSelector(selector), <modes.OnTypeFormattingEditProvider>{
223222

224223
autoFormatTriggerCharacters,
@@ -251,7 +250,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
251250

252251
// --- rename
253252

254-
$registerRenameSupport(handle: number, selector: vscode.DocumentSelector, supportsResolveInitialValues: boolean): void {
253+
$registerRenameSupport(handle: number, selector: ISerializedDocumentFilter[], supportsResolveInitialValues: boolean): void {
255254
this._registrations[handle] = modes.RenameProviderRegistry.register(toLanguageSelector(selector), <modes.RenameProvider>{
256255
provideRenameEdits: (model: ITextModel, position: EditorPosition, newName: string, token: CancellationToken): Thenable<modes.WorkspaceEdit> => {
257256
return wireCancellationToken(token, this._proxy.$provideRenameEdits(handle, model.uri, position, newName)).then(reviveWorkspaceEditDto);
@@ -264,7 +263,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
264263

265264
// --- suggest
266265

267-
$registerSuggestSupport(handle: number, selector: vscode.DocumentSelector, triggerCharacters: string[], supportsResolveDetails: boolean): void {
266+
$registerSuggestSupport(handle: number, selector: ISerializedDocumentFilter[], triggerCharacters: string[], supportsResolveDetails: boolean): void {
268267
this._registrations[handle] = modes.SuggestRegistry.register(toLanguageSelector(selector), <modes.ISuggestSupport>{
269268
triggerCharacters,
270269
provideCompletionItems: (model: ITextModel, position: EditorPosition, context: modes.SuggestContext, token: CancellationToken): Thenable<modes.ISuggestResult> => {
@@ -287,7 +286,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
287286

288287
// --- parameter hints
289288

290-
$registerSignatureHelpProvider(handle: number, selector: vscode.DocumentSelector, triggerCharacter: string[]): void {
289+
$registerSignatureHelpProvider(handle: number, selector: ISerializedDocumentFilter[], triggerCharacter: string[]): void {
291290
this._registrations[handle] = modes.SignatureHelpProviderRegistry.register(toLanguageSelector(selector), <modes.SignatureHelpProvider>{
292291

293292
signatureHelpTriggerCharacters: triggerCharacter,
@@ -301,7 +300,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
301300

302301
// --- links
303302

304-
$registerDocumentLinkProvider(handle: number, selector: vscode.DocumentSelector): void {
303+
$registerDocumentLinkProvider(handle: number, selector: ISerializedDocumentFilter[]): void {
305304
this._registrations[handle] = modes.LinkProviderRegistry.register(toLanguageSelector(selector), <modes.LinkProvider>{
306305
provideLinks: (model, token) => {
307306
return this._heapService.trackRecursive(wireCancellationToken(token, this._proxy.$provideDocumentLinks(handle, model.uri)));
@@ -314,7 +313,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
314313

315314
// --- colors
316315

317-
$registerDocumentColorProvider(handle: number, selector: vscode.DocumentSelector): void {
316+
$registerDocumentColorProvider(handle: number, selector: ISerializedDocumentFilter[]): void {
318317
const proxy = this._proxy;
319318
this._registrations[handle] = modes.ColorProviderRegistry.register(toLanguageSelector(selector), <modes.DocumentColorProvider>{
320319
provideDocumentColors: (model, token) => {
@@ -348,7 +347,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
348347

349348
// --- folding
350349

351-
$registerFoldingProvider(handle: number, selector: vscode.DocumentSelector): void {
350+
$registerFoldingProvider(handle: number, selector: ISerializedDocumentFilter[]): void {
352351
const proxy = this._proxy;
353352
this._registrations[handle] = modes.FoldingProviderRegistry.register(toLanguageSelector(selector), <modes.FoldingProvider>{
354353
provideFoldingRanges: (model, context, token) => {

src/vs/workbench/api/node/extHost.protocol.ts

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -257,28 +257,35 @@ export interface ISerializedLanguageConfiguration {
257257
};
258258
}
259259

260+
export interface ISerializedDocumentFilter {
261+
$serialized: true;
262+
language?: string;
263+
scheme?: string;
264+
pattern?: vscode.GlobPattern;
265+
}
266+
260267
export interface MainThreadLanguageFeaturesShape extends IDisposable {
261268
$unregister(handle: number): void;
262-
$registerOutlineSupport(handle: number, selector: vscode.DocumentSelector): void;
263-
$registerCodeLensSupport(handle: number, selector: vscode.DocumentSelector, eventHandle: number): void;
269+
$registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
270+
$registerCodeLensSupport(handle: number, selector: ISerializedDocumentFilter[], eventHandle: number): void;
264271
$emitCodeLensEvent(eventHandle: number, event?: any): void;
265-
$registerDeclaractionSupport(handle: number, selector: vscode.DocumentSelector): void;
266-
$registerImplementationSupport(handle: number, selector: vscode.DocumentSelector): void;
267-
$registerTypeDefinitionSupport(handle: number, selector: vscode.DocumentSelector): void;
268-
$registerHoverProvider(handle: number, selector: vscode.DocumentSelector): void;
269-
$registerDocumentHighlightProvider(handle: number, selector: vscode.DocumentSelector): void;
270-
$registerReferenceSupport(handle: number, selector: vscode.DocumentSelector): void;
271-
$registerQuickFixSupport(handle: number, selector: vscode.DocumentSelector): void;
272-
$registerDocumentFormattingSupport(handle: number, selector: vscode.DocumentSelector): void;
273-
$registerRangeFormattingSupport(handle: number, selector: vscode.DocumentSelector): void;
274-
$registerOnTypeFormattingSupport(handle: number, selector: vscode.DocumentSelector, autoFormatTriggerCharacters: string[]): void;
272+
$registerDeclaractionSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
273+
$registerImplementationSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
274+
$registerTypeDefinitionSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
275+
$registerHoverProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
276+
$registerDocumentHighlightProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
277+
$registerReferenceSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
278+
$registerQuickFixSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
279+
$registerDocumentFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
280+
$registerRangeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
281+
$registerOnTypeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[], autoFormatTriggerCharacters: string[]): void;
275282
$registerNavigateTypeSupport(handle: number): void;
276-
$registerRenameSupport(handle: number, selector: vscode.DocumentSelector, supportsResolveInitialValues: boolean): void;
277-
$registerSuggestSupport(handle: number, selector: vscode.DocumentSelector, triggerCharacters: string[], supportsResolveDetails: boolean): void;
278-
$registerSignatureHelpProvider(handle: number, selector: vscode.DocumentSelector, triggerCharacter: string[]): void;
279-
$registerDocumentLinkProvider(handle: number, selector: vscode.DocumentSelector): void;
280-
$registerDocumentColorProvider(handle: number, selector: vscode.DocumentSelector): void;
281-
$registerFoldingProvider(handle: number, selector: vscode.DocumentSelector): void;
283+
$registerRenameSupport(handle: number, selector: ISerializedDocumentFilter[], supportsResolveInitialValues: boolean): void;
284+
$registerSuggestSupport(handle: number, selector: ISerializedDocumentFilter[], triggerCharacters: string[], supportsResolveDetails: boolean): void;
285+
$registerSignatureHelpProvider(handle: number, selector: ISerializedDocumentFilter[], triggerCharacter: string[]): void;
286+
$registerDocumentLinkProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
287+
$registerDocumentColorProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
288+
$registerFoldingProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
282289
$setLanguageConfiguration(handle: number, languageId: string, configuration: ISerializedLanguageConfiguration): void;
283290
}
284291

0 commit comments

Comments
 (0)