提交 71f86e58 编写于 作者: M Matt Bierner

Merge plugin config provider into plugin manager

上级 5da4d118
......@@ -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);
}
}
......
......@@ -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<TypeScriptServiceClientHost> {
......@@ -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<TypeScriptServiceClientHost>,
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(
......
......@@ -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));
......
......@@ -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);
}
}
......
......@@ -13,7 +13,9 @@ export interface TypeScriptServerPlugin {
readonly languages: ReadonlyArray<string>;
}
export class PluginManager {
export class PluginManager extends Disposable {
private readonly _config = new Map<string, {}>();
@memoize
public get plugins(): ReadonlyArray<TypeScriptServerPlugin> {
const plugins: TypeScriptServerPlugin[] = [];
......@@ -31,10 +33,6 @@ export class PluginManager {
}
return plugins;
}
}
export class PluginConfigProvider extends Disposable {
private readonly _config = new Map<string, {}>();
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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册