From 92241d65aed0b2908e15c7b4baa2992bba28b260 Mon Sep 17 00:00:00 2001 From: Hasan Ali Date: Sun, 5 Jun 2022 21:36:42 +0100 Subject: [PATCH 1/2] Restart server automatically on settings changes --- editors/code/src/config.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index dba3421978ac..498defa4cb6f 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -60,14 +60,7 @@ export class Config { if (!requiresReloadOpt) return; - const userResponse = await vscode.window.showInformationMessage( - `Changing "${requiresReloadOpt}" requires a reload`, - "Reload now" - ); - - if (userResponse === "Reload now") { - await vscode.commands.executeCommand("rust-analyzer.reload"); - } + await vscode.commands.executeCommand("rust-analyzer.reload"); } // We don't do runtime config validation here for simplicity. More on stackoverflow: From 213fe5755c4145ae50cf78233ae46b0f8da55c84 Mon Sep 17 00:00:00 2001 From: Hasan Ali Date: Mon, 6 Jun 2022 08:51:50 +0100 Subject: [PATCH 2/2] Add restartServerOnConfigChange setting --- editors/code/package.json | 5 +++++ editors/code/src/config.ts | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/editors/code/package.json b/editors/code/package.json index 03ec18a5689e..e56583e63bd2 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -1115,6 +1115,11 @@ "Search in current workspace and dependencies." ] }, + "rust-analyzer.restartServerOnConfigChange": { + "markdownDescription": "Whether to restart the server automatically when certain settings that require a restart are changed.", + "default": false, + "type": "boolean" + }, "$generated-end": {} } }, diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index 498defa4cb6f..c9ca235ed5f7 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -60,7 +60,18 @@ export class Config { if (!requiresReloadOpt) return; - await vscode.commands.executeCommand("rust-analyzer.reload"); + if (this.restartServerOnConfigChange) { + await vscode.commands.executeCommand("rust-analyzer.reload"); + } else { + const userResponse = await vscode.window.showInformationMessage( + `Changing "${requiresReloadOpt}" requires a reload`, + "Reload now" + ); + + if (userResponse === "Reload now") { + await vscode.commands.executeCommand("rust-analyzer.reload"); + } + } } // We don't do runtime config validation here for simplicity. More on stackoverflow: @@ -112,6 +123,10 @@ export class Config { return this.get("runnableEnv"); } + get restartServerOnConfigChange() { + return this.get("restartServerOnConfigChange"); + } + get debug() { let sourceFileMap = this.get | "auto">("debug.sourceFileMap"); if (sourceFileMap !== "auto") {