From 68ff71e3ab91f01039bb30121d05d0289bb1bd1f Mon Sep 17 00:00:00 2001 From: veetaha Date: Wed, 25 Mar 2020 20:56:48 +0200 Subject: vscode: fix local devel The value of releaseTag is not undefined, but null in actual package.json --- editors/code/src/config.ts | 2 +- editors/code/src/main.ts | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index 637aea27d..e77462c1b 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -21,7 +21,7 @@ export class Config { readonly package: { version: string; - releaseTag: string | undefined; + releaseTag: string | null; enableProposedApi: boolean | undefined; } = vscode.extensions.getExtension(this.extensionId)!.packageJSON; diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index de27d9535..814ae9dc2 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -110,11 +110,13 @@ async function bootstrap(config: Config, state: PersistentState): Promise { - if (config.package.releaseTag === undefined) return; + if (config.package.releaseTag === null) return; if (config.channel === "stable") { if (config.package.releaseTag === NIGHTLY_TAG) { - vscode.window.showWarningMessage(`You are running a nightly version of rust-analyzer extension. -To switch to stable, uninstall the extension and re-install it from the marketplace`); + void vscode.window.showWarningMessage( + `You are running a nightly version of rust-analyzer extension. ` + + `To switch to stable, uninstall the extension and re-install it from the marketplace` + ); } return; }; @@ -185,7 +187,7 @@ async function getServer(config: Config, state: PersistentState): Promise Date: Thu, 26 Mar 2020 23:44:19 +0200 Subject: vscode: fix memory leak on server restart The memory leak was because on the server restrart the array of extensionContext.substiptions was not cleared --- editors/code/src/main.ts | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 814ae9dc2..6cde5c366 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -48,21 +48,19 @@ export async function activate(context: vscode.ExtensionContext) { ctx = await Ctx.create(config, context, serverPath); // Commands which invokes manually via command palette, shortcut, etc. - ctx.registerCommand('reload', (ctx) => { - return async () => { - vscode.window.showInformationMessage('Reloading rust-analyzer...'); - // @DanTup maneuver - // https://github.com/microsoft/vscode/issues/45774#issuecomment-373423895 - await deactivate(); - for (const sub of ctx.subscriptions) { - try { - sub.dispose(); - } catch (e) { - log.error(e); - } + + // Reloading is inspired by @DanTup maneuver: https://github.com/microsoft/vscode/issues/45774#issuecomment-373423895 + ctx.registerCommand('reload', _ => async () => { + void vscode.window.showInformationMessage('Reloading rust-analyzer...'); + await deactivate(); + while (context.subscriptions.length > 0) { + try { + context.subscriptions.pop()!.dispose(); + } catch (err) { + log.error("Dispose error:", err); } - await activate(context); - }; + } + await activate(context).catch(log.error); }); ctx.registerCommand('analyzerStatus', commands.analyzerStatus); @@ -96,7 +94,7 @@ export async function activate(context: vscode.ExtensionContext) { } export async function deactivate() { - await ctx?.client?.stop(); + await ctx?.client.stop(); ctx = undefined; } -- cgit v1.2.3 From 261ef1c4555839c2f054ead8dd622b20e1a39106 Mon Sep 17 00:00:00 2001 From: veetaha Date: Thu, 26 Mar 2020 23:45:01 +0200 Subject: vscode: small post-refactor --- editors/code/src/main.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 6cde5c366..980ed925b 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -169,9 +169,7 @@ async function bootstrapServer(config: Config, state: PersistentState): Promise< log.debug("Checked binary availability via --version", res); log.debug(res, "--version output:", res.output); if (res.status !== 0) { - throw new Error( - `Failed to execute ${path} --version` - ); + throw new Error(`Failed to execute ${path} --version`); } return path; -- cgit v1.2.3