diff --git a/src/ShaderTools.VSCode/src/main.ts b/src/ShaderTools.VSCode/src/main.ts index 151064a1..a208b7fa 100644 --- a/src/ShaderTools.VSCode/src/main.ts +++ b/src/ShaderTools.VSCode/src/main.ts @@ -8,4 +8,8 @@ var sessionManager: SessionManager = undefined; export function activate(context: vscode.ExtensionContext): void { context.subscriptions.push(sessionManager = new SessionManager()); sessionManager.start(); +} + +export function deactivate(): Promise { + return sessionManager.stop(); } \ No newline at end of file diff --git a/src/ShaderTools.VSCode/src/session.ts b/src/ShaderTools.VSCode/src/session.ts index 9836c679..f464ab15 100644 --- a/src/ShaderTools.VSCode/src/session.ts +++ b/src/ShaderTools.VSCode/src/session.ts @@ -35,7 +35,7 @@ export class SessionManager { this.startEditorServices(); } - public stop() { + public stop(): Promise { if (this.sessionStatus === SessionStatus.Failed) { // Before moving further, clear out the client and process if // the process is already dead (i.e. it crashed) @@ -44,13 +44,17 @@ export class SessionManager { this.sessionStatus = SessionStatus.Stopping; + var promise = Promise.resolve(); + // Close the language server client if (this.languageServerClient !== undefined) { - this.languageServerClient.stop(); + promise = this.languageServerClient.stop(); this.languageServerClient = undefined; } this.sessionStatus = SessionStatus.NotStarted; + + return promise; } public dispose() : void {