提交 56389225 编写于 作者: M Matt Bierner

Remove duplicate TS registrations

上级 4e24d6ea
...@@ -22,15 +22,13 @@ interface Source { ...@@ -22,15 +22,13 @@ interface Source {
} }
export default class TypeScriptCodeActionProvider implements CodeActionProvider { export default class TypeScriptCodeActionProvider implements CodeActionProvider {
private commandId: string; private commandId: string = '_typescript.applyCodeAction';
private supportedCodeActions: Promise<NumberSet>; private supportedCodeActions: Promise<NumberSet>;
constructor( constructor(
private client: ITypescriptServiceClient, private readonly client: ITypescriptServiceClient
modeId: string
) { ) {
this.commandId = `typescript.codeActions.${modeId}`;
this.supportedCodeActions = client.execute('getSupportedCodeFixes', null, undefined) this.supportedCodeActions = client.execute('getSupportedCodeFixes', null, undefined)
.then(response => response.body || []) .then(response => response.body || [])
.then(codes => codes.map(code => +code).filter(code => !isNaN(code))) .then(codes => codes.map(code => +code).filter(code => !isNaN(code)))
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* ------------------------------------------------------------------------------------------ */ * ------------------------------------------------------------------------------------------ */
'use strict'; 'use strict';
import { env, languages, commands, workspace, window, ExtensionContext, Memento, IndentAction, Diagnostic, DiagnosticCollection, Range, DocumentFilter, Disposable, Uri, MessageItem, TextEditor } from 'vscode'; import { env, languages, commands, workspace, window, ExtensionContext, Memento, IndentAction, Diagnostic, DiagnosticCollection, Range, Disposable, Uri, MessageItem, TextEditor } from 'vscode';
// This must be the first statement otherwise modules might got loaded with // This must be the first statement otherwise modules might got loaded with
// the wrong locale. // the wrong locale.
...@@ -183,54 +183,48 @@ class LanguageProvider { ...@@ -183,54 +183,48 @@ class LanguageProvider {
} }
private registerProviders(client: TypeScriptServiceClient): void { private registerProviders(client: TypeScriptServiceClient): void {
const selector = this.description.modeIds;
const config = workspace.getConfiguration(this.id); const config = workspace.getConfiguration(this.id);
this.completionItemProvider = new CompletionItemProvider(client, this.typingsStatus); this.completionItemProvider = new CompletionItemProvider(client, this.typingsStatus);
this.completionItemProvider.updateConfiguration(); this.completionItemProvider.updateConfiguration();
languages.registerCompletionItemProvider(selector, this.completionItemProvider, '.');
let hoverProvider = new HoverProvider(client);
let definitionProvider = new DefinitionProvider(client);
let implementationProvider = new ImplementationProvider(client);
const typeDefinitionProvider = new TypeDefintionProvider(client);
let documentHighlightProvider = new DocumentHighlightProvider(client);
let referenceProvider = new ReferenceProvider(client);
let documentSymbolProvider = new DocumentSymbolProvider(client);
let signatureHelpProvider = new SignatureHelpProvider(client);
let renameProvider = new RenameProvider(client);
this.formattingProvider = new FormattingProvider(client); this.formattingProvider = new FormattingProvider(client);
this.formattingProvider.updateConfiguration(config); this.formattingProvider.updateConfiguration(config);
languages.registerOnTypeFormattingEditProvider(selector, this.formattingProvider, ';', '}', '\n');
if (this.formattingProvider.isEnabled()) { if (this.formattingProvider.isEnabled()) {
this.formattingProviderRegistration = languages.registerDocumentRangeFormattingEditProvider(this.description.modeIds, this.formattingProvider); this.formattingProviderRegistration = languages.registerDocumentRangeFormattingEditProvider(selector, this.formattingProvider);
} }
this.referenceCodeLensProvider = new ReferenceCodeLensProvider(client); languages.registerHoverProvider(selector, new HoverProvider(client));
this.referenceCodeLensProvider.updateConfiguration(); languages.registerDefinitionProvider(selector, new DefinitionProvider(client));
languages.registerDocumentHighlightProvider(selector, new DocumentHighlightProvider(client));
languages.registerReferenceProvider(selector, new ReferenceProvider(client));
languages.registerDocumentSymbolProvider(selector, new DocumentSymbolProvider(client));
languages.registerSignatureHelpProvider(selector, new SignatureHelpProvider(client), '(', ',');
languages.registerRenameProvider(selector, new RenameProvider(client));
if (client.apiVersion.has206Features()) { if (client.apiVersion.has206Features()) {
languages.registerCodeLensProvider(this.description.modeIds, this.referenceCodeLensProvider); this.referenceCodeLensProvider = new ReferenceCodeLensProvider(client);
this.referenceCodeLensProvider.updateConfiguration();
languages.registerCodeLensProvider(selector, this.referenceCodeLensProvider);
}
if (client.apiVersion.has213Features()) {
languages.registerCodeActionsProvider(selector, new CodeActionProvider(client));
}
if (client.apiVersion.has220Features()) {
languages.registerImplementationProvider(selector, new ImplementationProvider(client));
}
if (client.apiVersion.has213Features()) {
languages.registerTypeDefinitionProvider(selector, new TypeDefintionProvider(client));
} }
this.description.modeIds.forEach(modeId => { this.description.modeIds.forEach(modeId => {
const selector: DocumentFilter = modeId;
languages.registerCompletionItemProvider(selector, this.completionItemProvider, '.');
languages.registerHoverProvider(selector, hoverProvider);
languages.registerDefinitionProvider(selector, definitionProvider);
if (client.apiVersion.has220Features()) {
// TODO: TS 2.1.5 returns incorrect results for implementation locations.
languages.registerImplementationProvider(selector, implementationProvider);
}
if (client.apiVersion.has213Features()) {
languages.registerTypeDefinitionProvider(selector, typeDefinitionProvider);
}
languages.registerDocumentHighlightProvider(selector, documentHighlightProvider);
languages.registerReferenceProvider(selector, referenceProvider);
languages.registerDocumentSymbolProvider(selector, documentSymbolProvider);
languages.registerSignatureHelpProvider(selector, signatureHelpProvider, '(', ',');
languages.registerRenameProvider(selector, renameProvider);
languages.registerOnTypeFormattingEditProvider(selector, this.formattingProvider, ';', '}', '\n');
languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(client, modeId)); languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(client, modeId));
if (client.apiVersion.has213Features()) {
languages.registerCodeActionsProvider(selector, new CodeActionProvider(client, modeId));
}
languages.setLanguageConfiguration(modeId, { languages.setLanguageConfiguration(modeId, {
indentationRules: { indentationRules: {
......
...@@ -124,6 +124,7 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient ...@@ -124,6 +124,7 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
private _apiVersion: API; private _apiVersion: API;
private telemetryReporter: TelemetryReporter; private telemetryReporter: TelemetryReporter;
constructor(host: ITypescriptServiceClientHost, storagePath: string | undefined, globalState: Memento, private workspaceState: Memento) { constructor(host: ITypescriptServiceClientHost, storagePath: string | undefined, globalState: Memento, private workspaceState: Memento) {
this.host = host; this.host = host;
this.storagePath = storagePath; this.storagePath = storagePath;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册