From 8697a5e4ec152832a2612929c87d56302dbb2e79 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 2 Jan 2018 15:49:24 -0800 Subject: [PATCH] Extract common logic for adding a new adapter in exthost Extract function for the following pattern used a number of times in `ExtHostLanguageFeatures`: ``` const handle = this._nextHandle(); this._adapter.set(handle, new OutlineAdapter(this._documents, provider)); ``` --- .../api/node/extHostLanguageFeatures.ts | 57 ++++++++----------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 3f8e0d8603c..d1787b70b95 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -824,11 +824,16 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return callback(adapter); } + private _addNewAdapter(adapter: Adapter): number { + const handle = this._nextHandle(); + this._adapter.set(handle, adapter); + return handle; + } + // --- outline registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new OutlineAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new OutlineAdapter(this._documents, provider)); this._proxy.$registerOutlineSupport(handle, selector); return this._createDisposable(handle); } @@ -866,8 +871,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- declaration registerDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.DefinitionProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new DefinitionAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new DefinitionAdapter(this._documents, provider)); this._proxy.$registerDeclaractionSupport(handle, selector); return this._createDisposable(handle); } @@ -877,8 +881,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { } registerImplementationProvider(selector: vscode.DocumentSelector, provider: vscode.ImplementationProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new ImplementationAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new ImplementationAdapter(this._documents, provider)); this._proxy.$registerImplementationSupport(handle, selector); return this._createDisposable(handle); } @@ -888,8 +891,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { } registerTypeDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.TypeDefinitionProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new TypeDefinitionAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new TypeDefinitionAdapter(this._documents, provider)); this._proxy.$registerTypeDefinitionSupport(handle, selector); return this._createDisposable(handle); } @@ -901,8 +903,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- extra info registerHoverProvider(selector: vscode.DocumentSelector, provider: vscode.HoverProvider, extensionId?: string): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new HoverAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new HoverAdapter(this._documents, provider)); this._proxy.$registerHoverProvider(handle, selector); return this._createDisposable(handle); } @@ -914,8 +915,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- occurrences registerDocumentHighlightProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentHighlightProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new DocumentHighlightAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new DocumentHighlightAdapter(this._documents, provider)); this._proxy.$registerDocumentHighlightProvider(handle, selector); return this._createDisposable(handle); } @@ -927,8 +927,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- references registerReferenceProvider(selector: vscode.DocumentSelector, provider: vscode.ReferenceProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new ReferenceAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new ReferenceAdapter(this._documents, provider)); this._proxy.$registerReferenceSupport(handle, selector); return this._createDisposable(handle); } @@ -940,8 +939,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- quick fix registerCodeActionProvider(selector: vscode.DocumentSelector, provider: vscode.CodeActionProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new CodeActionAdapter(this._documents, this._commands.converter, this._diagnostics, provider)); + const handle = this._addNewAdapter(new CodeActionAdapter(this._documents, this._commands.converter, this._diagnostics, provider)); this._proxy.$registerQuickFixSupport(handle, selector); return this._createDisposable(handle); } @@ -953,8 +951,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- formatting registerDocumentFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentFormattingEditProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new DocumentFormattingAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new DocumentFormattingAdapter(this._documents, provider)); this._proxy.$registerDocumentFormattingSupport(handle, selector); return this._createDisposable(handle); } @@ -964,8 +961,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { } registerDocumentRangeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentRangeFormattingEditProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new RangeFormattingAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new RangeFormattingAdapter(this._documents, provider)); this._proxy.$registerRangeFormattingSupport(handle, selector); return this._createDisposable(handle); } @@ -975,8 +971,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { } registerOnTypeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.OnTypeFormattingEditProvider, triggerCharacters: string[]): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new OnTypeFormattingAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new OnTypeFormattingAdapter(this._documents, provider)); this._proxy.$registerOnTypeFormattingSupport(handle, selector, triggerCharacters); return this._createDisposable(handle); } @@ -988,8 +983,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- navigate types registerWorkspaceSymbolProvider(provider: vscode.WorkspaceSymbolProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new NavigateTypeAdapter(provider)); + const handle = this._addNewAdapter(new NavigateTypeAdapter(provider)); this._proxy.$registerNavigateTypeSupport(handle); return this._createDisposable(handle); } @@ -1009,8 +1003,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- rename registerRenameProvider(selector: vscode.DocumentSelector, provider: vscode.RenameProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new RenameAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new RenameAdapter(this._documents, provider)); this._proxy.$registerRenameSupport(handle, selector); return this._createDisposable(handle); } @@ -1022,8 +1015,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- suggestion registerCompletionItemProvider(selector: vscode.DocumentSelector, provider: vscode.CompletionItemProvider, triggerCharacters: string[]): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new SuggestAdapter(this._documents, this._commands.converter, provider)); + const handle = this._addNewAdapter(new SuggestAdapter(this._documents, this._commands.converter, provider)); this._proxy.$registerSuggestSupport(handle, selector, triggerCharacters, SuggestAdapter.supportsResolving(provider)); return this._createDisposable(handle); } @@ -1043,8 +1035,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- parameter hints registerSignatureHelpProvider(selector: vscode.DocumentSelector, provider: vscode.SignatureHelpProvider, triggerCharacters: string[]): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new SignatureHelpAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new SignatureHelpAdapter(this._documents, provider)); this._proxy.$registerSignatureHelpProvider(handle, selector, triggerCharacters); return this._createDisposable(handle); } @@ -1056,8 +1047,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- links registerDocumentLinkProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentLinkProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new LinkProviderAdapter(this._documents, this._heapService, provider)); + const handle = this._addNewAdapter(new LinkProviderAdapter(this._documents, this._heapService, provider)); this._proxy.$registerDocumentLinkProvider(handle, selector); return this._createDisposable(handle); } @@ -1071,8 +1061,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { } registerColorProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentColorProvider): vscode.Disposable { - const handle = this._nextHandle(); - this._adapter.set(handle, new ColorProviderAdapter(this._documents, provider)); + const handle = this._addNewAdapter(new ColorProviderAdapter(this._documents, provider)); this._proxy.$registerDocumentColorProvider(handle, selector); return this._createDisposable(handle); } -- GitLab