Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'editors/code/src/config.ts')
-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 92a816bfbc..e676bc0826 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) {