Skip to content

Commit 2940f89

Browse files
committed
fix: add close handler for lsProcess
1 parent 65191d0 commit 2940f89

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

lib/auto-languageclient.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ export default class AutoLanguageClient {
368368

369369
private captureServerErrors(lsProcess: LanguageServerProcess, projectPath: string): void {
370370
lsProcess.on('error', (err) => this.handleSpawnFailure(err));
371+
lsProcess.on("close", (...args) => this.handleCloseFailure(...args));
371372
lsProcess.on('exit', (code, signal) => this.logger.debug(`exit: code ${code} signal ${signal}`));
372373
lsProcess.stderr.setEncoding('utf8');
373374
lsProcess.stderr.on('data', (chunk: Buffer) => {
@@ -391,6 +392,14 @@ export default class AutoLanguageClient {
391392
);
392393
}
393394

395+
private handleCloseFailure(code: number | null, signal: NodeJS.Signals | null): void {
396+
if (code !== 0 && signal === null) {
397+
atom.notifications.addError(
398+
`${this.getServerName()} language server for ${this.getLanguageName()} was closed with code: ${code}.`
399+
);
400+
}
401+
}
402+
394403
/** Creates the RPC connection which can be ipc, socket or stdio */
395404
private createRpcConnection(lsProcess: LanguageServerProcess): rpc.MessageConnection {
396405
let reader: rpc.MessageReader;

lib/server-manager.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ export interface LanguageServerProcess extends EventEmitter {
2424
pid: number;
2525

2626
kill(signal?: NodeJS.Signals | number): void;
27+
on(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
28+
on(event: 'disconnect', listener: () => void): this;
2729
on(event: 'error', listener: (err: Error) => void): this;
28-
on(event: 'exit', listener: (code: number, signal: NodeJS.Signals | number) => void): this;
30+
on(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
2931
}
3032

3133
/** The necessary elements for a server that has started or is starting. */

0 commit comments

Comments
 (0)