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

Remove ITypeScriptServiceClientHost

Better decouple host from client
上级 a3562fa1
......@@ -14,7 +14,6 @@ import * as Proto from './protocol';
import * as PConst from './protocol.const';
import TypeScriptServiceClient from './typescriptServiceClient';
import { ITypeScriptServiceClientHost } from './typescriptService';
import LanguageProvider from './languageProvider';
import TypingsStatus, { AtaProgressReporter } from './utils/typingsStatus';
......@@ -36,7 +35,7 @@ const styleCheckDiagnostics = [
7030 // not all code paths return a value
];
export default class TypeScriptServiceClientHost implements ITypeScriptServiceClientHost {
export default class TypeScriptServiceClientHost {
private readonly ataProgressReporter: AtaProgressReporter;
private readonly typingsStatus: TypingsStatus;
private readonly client: TypeScriptServiceClient;
......@@ -68,12 +67,13 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl
configFileWatcher.onDidDelete(handleProjectCreateOrDelete, this, this.disposables);
configFileWatcher.onDidChange(handleProjectChange, this, this.disposables);
this.client = new TypeScriptServiceClient(this, workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider);
this.client = new TypeScriptServiceClient(workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider);
this.disposables.push(this.client);
this.client.onSyntaxDiagnosticsReceived(diag => this.syntaxDiagnosticsReceived(diag), null, this.disposables);
this.client.onSemanticDiagnosticsReceived(diag => this.semanticDiagnosticsReceived(diag), null, this.disposables);
this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables);
this.client.onResendModelsRequested(() => this.populateService(), null, this.disposables);
this.versionStatus = new VersionStatus(resource => this.client.normalizePath(resource));
this.disposables.push(this.versionStatus);
......@@ -161,7 +161,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl
}
}
/* internal */ populateService(): void {
private populateService(): void {
// See https://github.com/Microsoft/TypeScript/issues/5530
workspace.saveAll(false).then(() => {
for (const language of this.languagePerId.values()) {
......
......@@ -11,11 +11,6 @@ import { TypeScriptServerPlugin } from './utils/plugins';
import { TypeScriptServiceConfiguration } from './utils/configuration';
import Logger from './utils/logger';
export interface ITypeScriptServiceClientHost {
populateService(): void;
}
export interface ITypeScriptServiceClient {
normalizePath(resource: Uri): string | null;
asUrl(filepath: string): Uri;
......
......@@ -12,7 +12,7 @@ import { Reader, ICallback } from './utils/wireProtocol';
import { workspace, window, Uri, CancellationToken, Disposable, Memento, MessageItem, EventEmitter, Event, commands, env } from 'vscode';
import * as Proto from './protocol';
import { ITypeScriptServiceClient, ITypeScriptServiceClientHost } from './typescriptService';
import { ITypeScriptServiceClient } from './typescriptService';
import { TypeScriptServerPlugin } from './utils/plugins';
import Logger from './utils/logger';
......@@ -182,7 +182,6 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient
private readonly disposables: Disposable[] = [];
constructor(
private readonly host: ITypeScriptServiceClientHost,
private readonly workspaceState: Memento,
private readonly onDidChangeTypeScriptVersion: (version: TypeScriptVersion) => void,
public readonly plugins: TypeScriptServerPlugin[],
......@@ -242,6 +241,9 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient
private _onConfigDiagnosticsReceived = new EventEmitter<Proto.ConfigFileDiagnosticEvent>();
public get onConfigDiagnosticsReceived(): Event<Proto.ConfigFileDiagnosticEvent> { return this._onConfigDiagnosticsReceived.event; }
private _onResendModelsRequested = new EventEmitter<void>();
public get onResendModelsRequested(): Event<void> { return this._onResendModelsRequested.event; }
public get configuration() {
return this._configuration;
}
......@@ -257,6 +259,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient
this._onSyntaxDiagnosticsReceived.dispose();
this._onSemanticDiagnosticsReceived.dispose();
this._onConfigDiagnosticsReceived.dispose();
this._onResendModelsRequested.dispose();
}
public restartTsServer(): void {
......@@ -499,7 +502,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient
this.execute('configure', configureOptions);
this.setCompilerOptionsForInferredProjects(this._configuration);
if (resendModels) {
this.host.populateService();
this._onResendModelsRequested.fire();
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册