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

Fix reloading TSServer not updating diagnostics

Fixes #25412
上级 e136386c
......@@ -257,11 +257,13 @@ export default class BufferSyncSupport {
}
}
let args: Proto.GeterrRequestArgs = {
delay: 0,
files: files
};
this.client.execute('geterr', args, false);
if (files.length) {
const args: Proto.GeterrRequestArgs = {
delay: 0,
files: files
};
this.client.execute('geterr', args, false);
}
this.pendingDiagnostics = Object.create(null);
}
......
......@@ -507,6 +507,10 @@ class TypeScriptServiceClientHost implements ITypescriptServiceClientHost {
this.languagePerId[description.id] = manager;
}
});
this.client.onTsServerStarted(() => {
this.triggerAllDiagnostics();
});
}
public dispose(): void {
......
......@@ -76,6 +76,8 @@ export interface ITypescriptServiceClient {
warn(message: string, data?: any): void;
onTsServerStarted: Event<void>;
onProjectLanguageServiceStateChanged: Event<Proto.ProjectLanguageServiceStateEventBody>;
onDidBeginInstallTypings: Event<Proto.BeginInstallTypesEventBody>;
onDidEndInstallTypings: Event<Proto.EndInstallTypesEventBody>;
......
......@@ -245,6 +245,7 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
private requestQueue: RequestQueue;
private callbacks: CallbackMap;
private readonly _onTsServerStarted = new EventEmitter<void>();
private readonly _onProjectLanguageServiceStateChanged = new EventEmitter<Proto.ProjectLanguageServiceStateEventBody>();
private readonly _onDidBeginInstallTypings = new EventEmitter<Proto.BeginInstallTypesEventBody>();
private readonly _onDidEndInstallTypings = new EventEmitter<Proto.EndInstallTypesEventBody>();
......@@ -319,6 +320,10 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
}
}
get onTsServerStarted(): Event<void> {
return this._onTsServerStarted.event;
}
get onProjectLanguageServiceStateChanged(): Event<Proto.ProjectLanguageServiceStateEventBody> {
return this._onProjectLanguageServiceStateChanged.event;
}
......@@ -572,6 +577,8 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
this._onReady.resolve();
resolve(childProcess);
this._onTsServerStarted.fire();
this.serviceStarted(resendModels);
});
} catch (error) {
......@@ -922,7 +929,7 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
}
private sendRequest(requestItem: RequestItem): void {
let serverRequest = requestItem.request;
const serverRequest = requestItem.request;
this.tracer.traceRequest(serverRequest, !!requestItem.callbacks, this.requestQueue.length);
if (requestItem.callbacks) {
this.callbacks.add(serverRequest.seq, requestItem.callbacks);
......@@ -930,7 +937,8 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
this.service()
.then((childProcess) => {
childProcess.stdin.write(JSON.stringify(serverRequest) + '\r\n', 'utf8');
}).then(undefined, err => {
})
.then(undefined, err => {
const callback = this.callbacks.fetch(serverRequest.seq);
if (callback) {
callback.e(err);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册