mirror of
https://github.com/Microsoft/vscode
synced 2024-09-20 11:08:00 +00:00
Lazy load some ts providers
This commit is contained in:
parent
f8f218b426
commit
0f1c9696d9
|
@ -34,7 +34,7 @@ const directives: Directive[] = [
|
|||
}
|
||||
];
|
||||
|
||||
export class DirectiveCommentCompletionProvider implements CompletionItemProvider {
|
||||
export default class DirectiveCommentCompletionProvider implements CompletionItemProvider {
|
||||
constructor(
|
||||
private client: ITypescriptServiceClient,
|
||||
) { }
|
||||
|
|
|
@ -24,26 +24,11 @@ import * as PConst from './protocol.const';
|
|||
import TypeScriptServiceClient from './typescriptServiceClient';
|
||||
import { ITypescriptServiceClientHost } from './typescriptService';
|
||||
|
||||
import HoverProvider from './features/hoverProvider';
|
||||
import DefinitionProvider from './features/definitionProvider';
|
||||
import ImplementationProvider from './features/implementationProvider';
|
||||
import TypeDefintionProvider from './features/typeDefinitionProvider';
|
||||
import DocumentHighlightProvider from './features/documentHighlightProvider';
|
||||
import ReferenceProvider from './features/referenceProvider';
|
||||
import DocumentSymbolProvider from './features/documentSymbolProvider';
|
||||
import SignatureHelpProvider from './features/signatureHelpProvider';
|
||||
import RenameProvider from './features/renameProvider';
|
||||
import { TypeScriptFormattingProvider, FormattingProviderManager } from './features/formattingProvider';
|
||||
import BufferSyncSupport from './features/bufferSyncSupport';
|
||||
import CompletionItemProvider from './features/completionItemProvider';
|
||||
import WorkspaceSymbolProvider from './features/workspaceSymbolProvider';
|
||||
import CodeActionProvider from './features/codeActionProvider';
|
||||
import RefactorProvider from './features/refactorProvider';
|
||||
import ReferenceCodeLensProvider from './features/referencesCodeLensProvider';
|
||||
import { JsDocCompletionProvider, TryCompleteJsDocCommand } from './features/jsDocCompletionProvider';
|
||||
import { DirectiveCommentCompletionProvider } from './features/directiveCommentCompletionProvider';
|
||||
import TypeScriptTaskProviderManager from './features/taskProvider';
|
||||
import ImplementationCodeLensProvider from './features/implementationsCodeLensProvider';
|
||||
|
||||
import * as ProjectStatus from './utils/projectStatus';
|
||||
import TypingsStatus, { AtaProgressReporter } from './utils/typingsStatus';
|
||||
|
@ -218,8 +203,8 @@ class LanguageProvider {
|
|||
workspace.onDidChangeConfiguration(this.configurationChanged, this, this.disposables);
|
||||
this.configurationChanged();
|
||||
|
||||
client.onReady().then(() => {
|
||||
this.registerProviders(client);
|
||||
client.onReady().then(async () => {
|
||||
await this.registerProviders(client);
|
||||
this.bufferSyncSupport.listen();
|
||||
}, () => {
|
||||
// Nothing to do here. The client did show a message;
|
||||
|
@ -246,16 +231,16 @@ class LanguageProvider {
|
|||
this.bufferSyncSupport.dispose();
|
||||
}
|
||||
|
||||
private registerProviders(client: TypeScriptServiceClient): void {
|
||||
private async registerProviders(client: TypeScriptServiceClient): Promise<void> {
|
||||
const selector = this.description.modeIds;
|
||||
const config = workspace.getConfiguration(this.id);
|
||||
|
||||
const completionItemProvider = new CompletionItemProvider(client, this.typingsStatus);
|
||||
const completionItemProvider = new (await import('./features/completionItemProvider')).default(client, this.typingsStatus);
|
||||
completionItemProvider.updateConfiguration();
|
||||
this.toUpdateOnConfigurationChanged.push(completionItemProvider);
|
||||
this.disposables.push(languages.registerCompletionItemProvider(selector, completionItemProvider, '.'));
|
||||
|
||||
this.disposables.push(languages.registerCompletionItemProvider(selector, new DirectiveCommentCompletionProvider(client), '@'));
|
||||
this.disposables.push(languages.registerCompletionItemProvider(selector, new (await import('./features/directiveCommentCompletionProvider')).default(client), '@'));
|
||||
|
||||
const formattingProvider = new TypeScriptFormattingProvider(client);
|
||||
formattingProvider.updateConfiguration(config);
|
||||
|
@ -270,26 +255,26 @@ class LanguageProvider {
|
|||
jsDocCompletionProvider.updateConfiguration();
|
||||
this.disposables.push(languages.registerCompletionItemProvider(selector, jsDocCompletionProvider, '*'));
|
||||
|
||||
this.disposables.push(languages.registerHoverProvider(selector, new HoverProvider(client)));
|
||||
this.disposables.push(languages.registerDefinitionProvider(selector, new DefinitionProvider(client)));
|
||||
this.disposables.push(languages.registerDocumentHighlightProvider(selector, new DocumentHighlightProvider(client)));
|
||||
this.disposables.push(languages.registerReferenceProvider(selector, new ReferenceProvider(client)));
|
||||
this.disposables.push(languages.registerDocumentSymbolProvider(selector, new DocumentSymbolProvider(client)));
|
||||
this.disposables.push(languages.registerSignatureHelpProvider(selector, new SignatureHelpProvider(client), '(', ','));
|
||||
this.disposables.push(languages.registerRenameProvider(selector, new RenameProvider(client)));
|
||||
this.disposables.push(languages.registerCodeActionsProvider(selector, new CodeActionProvider(client, this.description.id)));
|
||||
this.disposables.push(languages.registerCodeActionsProvider(selector, new RefactorProvider(client, this.description.id)));
|
||||
this.disposables.push(languages.registerHoverProvider(selector, new (await import('./features/hoverProvider')).default(client)));
|
||||
this.disposables.push(languages.registerDefinitionProvider(selector, new (await import('./features/definitionProvider')).default(client)));
|
||||
this.disposables.push(languages.registerDocumentHighlightProvider(selector, new (await import('./features/documentHighlightProvider')).default(client)));
|
||||
this.disposables.push(languages.registerReferenceProvider(selector, new (await import('./features/referenceProvider')).default(client)));
|
||||
this.disposables.push(languages.registerDocumentSymbolProvider(selector, new (await import('./features/documentSymbolProvider')).default(client)));
|
||||
this.disposables.push(languages.registerSignatureHelpProvider(selector, new (await import('./features/signatureHelpProvider')).default(client), '(', ','));
|
||||
this.disposables.push(languages.registerRenameProvider(selector, new (await import('./features/renameProvider')).default(client)));
|
||||
this.disposables.push(languages.registerCodeActionsProvider(selector, new (await import('./features/codeActionProvider')).default(client, this.description.id)));
|
||||
this.disposables.push(languages.registerCodeActionsProvider(selector, new (await import('./features/refactorProvider')).default(client, this.description.id)));
|
||||
this.registerVersionDependentProviders();
|
||||
|
||||
for (const modeId of this.description.modeIds) {
|
||||
this.disposables.push(languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(client, modeId)));
|
||||
|
||||
const referenceCodeLensProvider = new ReferenceCodeLensProvider(client, modeId);
|
||||
const referenceCodeLensProvider = new (await import('./features/referencesCodeLensProvider')).default(client, modeId);
|
||||
referenceCodeLensProvider.updateConfiguration();
|
||||
this.toUpdateOnConfigurationChanged.push(referenceCodeLensProvider);
|
||||
this.disposables.push(languages.registerCodeLensProvider(selector, referenceCodeLensProvider));
|
||||
|
||||
const implementationCodeLensProvider = new ImplementationCodeLensProvider(client, modeId);
|
||||
const implementationCodeLensProvider = new (await import('./features/implementationsCodeLensProvider')).default(client, modeId);
|
||||
implementationCodeLensProvider.updateConfiguration();
|
||||
this.toUpdateOnConfigurationChanged.push(implementationCodeLensProvider);
|
||||
this.disposables.push(languages.registerCodeLensProvider(selector, implementationCodeLensProvider));
|
||||
|
@ -388,7 +373,7 @@ class LanguageProvider {
|
|||
this.registerVersionDependentProviders();
|
||||
}
|
||||
|
||||
private registerVersionDependentProviders(): void {
|
||||
private async registerVersionDependentProviders(): Promise<void> {
|
||||
while (this.versionDependentDisposables.length) {
|
||||
const obj = this.versionDependentDisposables.pop();
|
||||
if (obj) {
|
||||
|
@ -403,11 +388,11 @@ class LanguageProvider {
|
|||
|
||||
const selector = this.description.modeIds;
|
||||
if (this.client.apiVersion.has220Features()) {
|
||||
this.versionDependentDisposables.push(languages.registerImplementationProvider(selector, new ImplementationProvider(this.client)));
|
||||
this.versionDependentDisposables.push(languages.registerImplementationProvider(selector, new (await import('./features/implementationProvider')).default(this.client)));
|
||||
}
|
||||
|
||||
if (this.client.apiVersion.has213Features()) {
|
||||
this.versionDependentDisposables.push(languages.registerTypeDefinitionProvider(selector, new TypeDefintionProvider(this.client)));
|
||||
this.versionDependentDisposables.push(languages.registerTypeDefinitionProvider(selector, new (await import('./features/typeDefinitionProvider')).default(this.client)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue