Prompt the user to reload the window when enabling test explorer

This commit is contained in:
hkalbasi 2024-03-29 18:08:16 +03:30
parent beec6914c8
commit 34cde2cebc

View file

@ -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 (!requiresReloadOpt) return;
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 (!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) {