diff --git a/extensions/typescript-language-features/src/commands.ts b/extensions/typescript-language-features/src/commands.ts index 5f7815c5e9b5f..c34bc2881ae92 100644 --- a/extensions/typescript-language-features/src/commands.ts +++ b/extensions/typescript-language-features/src/commands.ts @@ -6,11 +6,11 @@ import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; import TypeScriptServiceClientHost from './typeScriptServiceClientHost'; +import { nulToken } from './utils/cancellation'; import { Command } from './utils/commandManager'; import { Lazy } from './utils/lazy'; +import { PluginManager } from './utils/plugins'; import { isImplicitProjectConfigFile, openOrCreateConfigFile } from './utils/tsconfig'; -import { nulToken } from './utils/cancellation'; -import { PluginConfigProvider } from './utils/plugins'; const localize = nls.loadMessageBundle(); @@ -108,11 +108,11 @@ export class ConfigurePluginCommand implements Command { public readonly id = '_typescript.configurePlugin'; public constructor( - private readonly pluginConfigProvider: PluginConfigProvider, + private readonly pluginManager: PluginManager, ) { } public execute(pluginId: string, configuration: any) { - this.pluginConfigProvider.set(pluginId, configuration); + this.pluginManager.set(pluginId, configuration); } } diff --git a/extensions/typescript-language-features/src/extension.ts b/extensions/typescript-language-features/src/extension.ts index abd6e252b6c87..c9a2068b6768a 100644 --- a/extensions/typescript-language-features/src/extension.ts +++ b/extensions/typescript-language-features/src/extension.ts @@ -15,7 +15,7 @@ import { standardLanguageDescriptions } from './utils/languageDescription'; import { lazy, Lazy } from './utils/lazy'; import LogDirectoryProvider from './utils/logDirectoryProvider'; import ManagedFileContextManager from './utils/managedFileContext'; -import { PluginConfigProvider, PluginManager } from './utils/plugins'; +import { PluginManager } from './utils/plugins'; import * as ProjectStatus from './utils/projectStatus'; import { Surveyor } from './utils/surveyor'; @@ -34,7 +34,6 @@ export function activate( context: vscode.ExtensionContext ): Api { const pluginManager = new PluginManager(); - const pluginConfigProvider = new PluginConfigProvider(); const commandManager = new CommandManager(); context.subscriptions.push(commandManager); @@ -42,11 +41,11 @@ export function activate( const onCompletionAccepted = new vscode.EventEmitter(); context.subscriptions.push(onCompletionAccepted); - const lazyClientHost = createLazyClientHost(context, pluginManager, pluginConfigProvider, commandManager, item => { + const lazyClientHost = createLazyClientHost(context, pluginManager, commandManager, item => { onCompletionAccepted.fire(item); }); - registerCommands(commandManager, lazyClientHost, pluginConfigProvider); + registerCommands(commandManager, lazyClientHost, pluginManager); context.subscriptions.push(new TypeScriptTaskProviderManager(lazyClientHost.map(x => x.serviceClient))); context.subscriptions.push(new LanguageConfigurationManager()); @@ -94,7 +93,6 @@ export function activate( function createLazyClientHost( context: vscode.ExtensionContext, pluginManager: PluginManager, - pluginConfigProvider: PluginConfigProvider, commandManager: CommandManager, onCompletionAccepted: (item: vscode.CompletionItem) => void, ): Lazy { @@ -105,7 +103,6 @@ function createLazyClientHost( standardLanguageDescriptions, context.workspaceState, pluginManager, - pluginConfigProvider, commandManager, logDirectoryProvider, onCompletionAccepted); @@ -129,7 +126,7 @@ function createLazyClientHost( function registerCommands( commandManager: CommandManager, lazyClientHost: Lazy, - pluginConfigProvider: PluginConfigProvider, + pluginManager: PluginManager, ) { commandManager.register(new commands.ReloadTypeScriptProjectsCommand(lazyClientHost)); commandManager.register(new commands.ReloadJavaScriptProjectsCommand(lazyClientHost)); @@ -138,7 +135,7 @@ function registerCommands( commandManager.register(new commands.RestartTsServerCommand(lazyClientHost)); commandManager.register(new commands.TypeScriptGoToProjectConfigCommand(lazyClientHost)); commandManager.register(new commands.JavaScriptGoToProjectConfigCommand(lazyClientHost)); - commandManager.register(new commands.ConfigurePluginCommand(pluginConfigProvider)); + commandManager.register(new commands.ConfigurePluginCommand(pluginManager)); } function isSupportedDocument( diff --git a/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts b/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts index 1adab801d3ac2..9c76d5e50ab90 100644 --- a/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts @@ -20,7 +20,7 @@ import { CommandManager } from './utils/commandManager'; import { Disposable } from './utils/dispose'; import { DiagnosticLanguage, LanguageDescription } from './utils/languageDescription'; import LogDirectoryProvider from './utils/logDirectoryProvider'; -import { PluginConfigProvider, PluginManager } from './utils/plugins'; +import { PluginManager } from './utils/plugins'; import * as typeConverters from './utils/typeConverters'; import TypingsStatus, { AtaProgressReporter } from './utils/typingsStatus'; import VersionStatus from './utils/versionStatus'; @@ -49,7 +49,6 @@ export default class TypeScriptServiceClientHost extends Disposable { descriptions: LanguageDescription[], workspaceState: vscode.Memento, pluginManager: PluginManager, - pluginConfigProvider: PluginConfigProvider, private readonly commandManager: CommandManager, logDirectoryProvider: LogDirectoryProvider, onCompletionAccepted: (item: vscode.CompletionItem) => void, @@ -74,7 +73,6 @@ export default class TypeScriptServiceClientHost extends Disposable { workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), pluginManager, - pluginConfigProvider, logDirectoryProvider, allModeIds)); diff --git a/extensions/typescript-language-features/src/typescriptServiceClient.ts b/extensions/typescript-language-features/src/typescriptServiceClient.ts index 2b1eec0cfd85e..dd5e5477312ea 100644 --- a/extensions/typescript-language-features/src/typescriptServiceClient.ts +++ b/extensions/typescript-language-features/src/typescriptServiceClient.ts @@ -20,7 +20,7 @@ import * as is from './utils/is'; import LogDirectoryProvider from './utils/logDirectoryProvider'; import Logger from './utils/logger'; import { TypeScriptPluginPathsProvider } from './utils/pluginPathsProvider'; -import { PluginConfigProvider, PluginManager } from './utils/plugins'; +import { PluginManager } from './utils/plugins'; import TelemetryReporter from './utils/telemetry'; import Tracer from './utils/tracer'; import { inferredProjectConfig } from './utils/tsconfig'; @@ -75,7 +75,6 @@ export default class TypeScriptServiceClient extends Disposable implements IType private readonly workspaceState: vscode.Memento, private readonly onDidChangeTypeScriptVersion: (version: TypeScriptVersion) => void, public readonly pluginManager: PluginManager, - private readonly pluginConfigProvider: PluginConfigProvider, private readonly logDirectoryProvider: LogDirectoryProvider, allModeIds: string[] ) { @@ -134,7 +133,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType this.typescriptServerSpawner = new TypeScriptServerSpawner(this.versionProvider, this.logDirectoryProvider, this.pluginPathsProvider, this.logger, this.telemetryReporter, this.tracer); - this._register(this.pluginConfigProvider.onDidUpdateConfig(update => { + this._register(this.pluginManager.onDidUpdateConfig(update => { this.configurePlugin(update.pluginId, update.config); })); } @@ -413,7 +412,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType } // Reconfigure any plugins - for (const [config, pluginName] of this.pluginConfigProvider.entries()) { + for (const [config, pluginName] of this.pluginManager.config()) { this.configurePlugin(config, pluginName); } } diff --git a/extensions/typescript-language-features/src/utils/plugins.ts b/extensions/typescript-language-features/src/utils/plugins.ts index b638b3b7690ef..19cdf7d46efb1 100644 --- a/extensions/typescript-language-features/src/utils/plugins.ts +++ b/extensions/typescript-language-features/src/utils/plugins.ts @@ -13,7 +13,9 @@ export interface TypeScriptServerPlugin { readonly languages: ReadonlyArray; } -export class PluginManager { +export class PluginManager extends Disposable { + private readonly _config = new Map(); + @memoize public get plugins(): ReadonlyArray { const plugins: TypeScriptServerPlugin[] = []; @@ -31,10 +33,6 @@ export class PluginManager { } return plugins; } -} - -export class PluginConfigProvider extends Disposable { - private readonly _config = new Map(); private readonly _onDidUpdateConfig = this._register(new vscode.EventEmitter<{ pluginId: string, config: {} }>()); public readonly onDidUpdateConfig = this._onDidUpdateConfig.event; @@ -44,7 +42,7 @@ export class PluginConfigProvider extends Disposable { this._onDidUpdateConfig.fire({ pluginId, config }); } - public entries(): IterableIterator<[string, {}]> { + public config(): IterableIterator<[string, {}]> { return this._config.entries(); } } \ No newline at end of file