about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-03-29 17:01:51 +0000
committerbors <bors@rust-lang.org>2024-03-29 17:01:51 +0000
commitf5a9250147f6569d8d89334dc9cca79c0322729f (patch)
treef79a9f093d529160ca6c41d66f8f0a16b75f3509
parent9d84142ef22103b76262974301f2cb22c186f0fe (diff)
parent34cde2cebc67b0b99b5c738f948497691d0ed5e3 (diff)
downloadrust-f5a9250147f6569d8d89334dc9cca79c0322729f.tar.gz
rust-f5a9250147f6569d8d89334dc9cca79c0322729f.zip
Auto merge of #16975 - HKalbasi:test-explorer, r=HKalbasi
Prompt the user to reload the window when enabling test explorer
-rw-r--r--editors/code/src/config.ts25
1 files changed, 21 insertions, 4 deletions
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts
index 92a816bfbcb..e676bc0826c 100644
--- a/editors/code/src/config.ts
+++ b/editors/code/src/config.ts
@@ -19,7 +19,7 @@ export class Config {
     configureLang: vscode.Disposable | undefined;
 
     readonly rootSection = "rust-analyzer";
-    private readonly requiresReloadOpts = [
+    private readonly requiresServerReloadOpts = [
         "cargo",
         "procMacro",
         "serverPath",
@@ -27,6 +27,10 @@ export class Config {
         "files",
     ].map((opt) => `${this.rootSection}.${opt}`);
 
+    private readonly requiresWindowReloadOpts = ["testExplorer"].map(
+        (opt) => `${this.rootSection}.${opt}`,
+    );
+
     readonly package: {
         version: string;
         releaseTag: string | null;
@@ -66,18 +70,31 @@ export class Config {
 
         this.configureLanguage();
 
-        const requiresReloadOpt = this.requiresReloadOpts.find((opt) =>
+        const requiresWindowReloadOpt = this.requiresWindowReloadOpts.find((opt) =>
+            event.affectsConfiguration(opt),
+        );
+
+        if (requiresWindowReloadOpt) {
+            const message = `Changing "${requiresWindowReloadOpt}" requires a window reload`;
+            const userResponse = await vscode.window.showInformationMessage(message, "Reload now");
+
+            if (userResponse) {
+                await vscode.commands.executeCommand("workbench.action.reloadWindow");
+            }
+        }
+
+        const requiresServerReloadOpt = this.requiresServerReloadOpts.find((opt) =>
             event.affectsConfiguration(opt),
         );
 
-        if (!requiresReloadOpt) return;
+        if (!requiresServerReloadOpt) return;
 
         if (this.restartServerOnConfigChange) {
             await vscode.commands.executeCommand("rust-analyzer.restartServer");
             return;
         }
 
-        const message = `Changing "${requiresReloadOpt}" requires a server restart`;
+        const message = `Changing "${requiresServerReloadOpt}" requires a server restart`;
         const userResponse = await vscode.window.showInformationMessage(message, "Restart now");
 
         if (userResponse) {