From cc167f6305c54a2491b8ed76e885e76903ac51d4 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 11 Apr 2017 14:39:23 -0700 Subject: [PATCH] Gate some ts code lenses in the providers themselves #24548 --- .../src/features/codeActionProvider.ts | 10 +++++++--- .../src/features/referencesCodeLensProvider.ts | 7 +++++++ extensions/typescript/src/typescriptMain.ts | 18 +++++++----------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/extensions/typescript/src/features/codeActionProvider.ts b/extensions/typescript/src/features/codeActionProvider.ts index ec927b9a158..f23f61d3c45 100644 --- a/extensions/typescript/src/features/codeActionProvider.ts +++ b/extensions/typescript/src/features/codeActionProvider.ts @@ -5,7 +5,7 @@ 'use strict'; -import { CodeActionProvider, TextDocument, Range, CancellationToken, CodeActionContext, Command, commands, Uri, workspace, WorkspaceEdit, TextEdit, FormattingOptions, window } from 'vscode'; +import { CodeActionProvider, TextDocument, Range, CancellationToken, CodeActionContext, Command, commands, Uri, workspace, WorkspaceEdit, TextEdit, FormattingOptions, window, ProviderResult } from 'vscode'; import * as Proto from '../protocol'; import { ITypescriptServiceClient } from '../typescriptService'; @@ -43,10 +43,14 @@ export default class TypeScriptCodeActionProvider implements CodeActionProvider commands.registerCommand(this.commandId, this.onCodeAction, this); } - public provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext, token: CancellationToken): Thenable { + public provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext, token: CancellationToken): ProviderResult { + if (!this.client.apiVersion.has213Features()) { + return []; + } + const file = this.client.normalizePath(document.uri); if (!file) { - return Promise.resolve([]); + return []; } let formattingOptions: FormattingOptions | undefined = undefined; for (const editor of window.visibleTextEditors) { diff --git a/extensions/typescript/src/features/referencesCodeLensProvider.ts b/extensions/typescript/src/features/referencesCodeLensProvider.ts index f2a52f09e47..694187a2747 100644 --- a/extensions/typescript/src/features/referencesCodeLensProvider.ts +++ b/extensions/typescript/src/features/referencesCodeLensProvider.ts @@ -22,6 +22,13 @@ export default class TypeScriptReferencesCodeLensProvider extends TypeScriptBase super(client, 'referencesCodeLens.enabled'); } + provideCodeLenses(document: TextDocument, token: CancellationToken): Promise { + if (!this.client.apiVersion.has206Features()) { + return Promise.resolve([]); + } + return super.provideCodeLenses(document, token); + } + resolveCodeLens(inputCodeLens: CodeLens, token: CancellationToken): Promise { const codeLens = inputCodeLens as ReferencesCodeLens; const args: Proto.FileLocationRequestArgs = { diff --git a/extensions/typescript/src/typescriptMain.ts b/extensions/typescript/src/typescriptMain.ts index f633472ab55..c24ee6bc26c 100644 --- a/extensions/typescript/src/typescriptMain.ts +++ b/extensions/typescript/src/typescriptMain.ts @@ -224,19 +224,15 @@ class LanguageProvider { this.disposables.push(languages.registerSignatureHelpProvider(selector, new SignatureHelpProvider(client), '(', ',')); this.disposables.push(languages.registerRenameProvider(selector, new RenameProvider(client))); - if (client.apiVersion.has206Features()) { - this.referenceCodeLensProvider = new ReferenceCodeLensProvider(client); - this.referenceCodeLensProvider.updateConfiguration(); - this.disposables.push(languages.registerCodeLensProvider(selector, this.referenceCodeLensProvider)); + this.referenceCodeLensProvider = new ReferenceCodeLensProvider(client); + this.referenceCodeLensProvider.updateConfiguration(); + this.disposables.push(languages.registerCodeLensProvider(selector, this.referenceCodeLensProvider)); - this.implementationCodeLensProvider = new ImplementationCodeLensProvider(client); - this.implementationCodeLensProvider.updateConfiguration(); - this.disposables.push(languages.registerCodeLensProvider(selector, this.implementationCodeLensProvider)); - } + this.implementationCodeLensProvider = new ImplementationCodeLensProvider(client); + this.implementationCodeLensProvider.updateConfiguration(); + this.disposables.push(languages.registerCodeLensProvider(selector, this.implementationCodeLensProvider)); - if (client.apiVersion.has213Features()) { - this.disposables.push(languages.registerCodeActionsProvider(selector, new CodeActionProvider(client, this.description.id))); - } + this.disposables.push(languages.registerCodeActionsProvider(selector, new CodeActionProvider(client, this.description.id))); if (client.apiVersion.has220Features()) { this.disposables.push(languages.registerImplementationProvider(selector, new ImplementationProvider(client))); -- GitLab