feat: add conflict ext (panicbit.cargo) detect

This commit is contained in:
Young-Flash 2024-01-22 18:49:39 +08:00
parent 3f4c6dac3d
commit e15f40e842

View file

@ -25,16 +25,7 @@ export async function deactivate() {
export async function activate( export async function activate(
context: vscode.ExtensionContext, context: vscode.ExtensionContext,
): Promise<RustAnalyzerExtensionApi> { ): Promise<RustAnalyzerExtensionApi> {
if (vscode.extensions.getExtension("rust-lang.rust")) { conflictExtDetect();
vscode.window
.showWarningMessage(
`You have both the rust-analyzer (rust-lang.rust-analyzer) and Rust (rust-lang.rust) ` +
"plugins enabled. These are known to conflict and cause various functions of " +
"both plugins to not work correctly. You should disable one of them.",
"Got it",
)
.then(() => {}, console.error);
}
const ctx = new Ctx(context, createCommands(), fetchWorkspace()); const ctx = new Ctx(context, createCommands(), fetchWorkspace());
// VS Code doesn't show a notification when an extension fails to activate // VS Code doesn't show a notification when an extension fails to activate
@ -149,7 +140,7 @@ function createCommands(): Record<string, CommandFactory> {
health: "stopped", health: "stopped",
}); });
}, },
disabled: (_) => async () => {}, disabled: (_) => async () => { },
}, },
analyzerStatus: { enabled: commands.analyzerStatus }, analyzerStatus: { enabled: commands.analyzerStatus },
@ -200,3 +191,30 @@ function createCommands(): Record<string, CommandFactory> {
revealDependency: { enabled: commands.revealDependency }, revealDependency: { enabled: commands.revealDependency },
}; };
} }
function conflictExtDetect() {
if (vscode.extensions.getExtension("rust-lang.rust")) {
vscode.window
.showWarningMessage(
`You have both the rust-analyzer (rust-lang.rust-analyzer) and Rust (rust-lang.rust) ` +
"plugins enabled. These are known to conflict and cause various functions of " +
"both plugins to not work correctly. You should disable one of them.",
"Got it"
)
.then(() => { }, console.error);
}
if (vscode.extensions.getExtension("panicbit.cargo")) {
let isRustAnalyzerCheckOnSave = vscode.workspace.getConfiguration("rust-analyzer").get("checkOnSave");
let isCargoAutomaticCheck = vscode.workspace.getConfiguration("cargo").get("automaticCheck");
if (isRustAnalyzerCheckOnSave && isCargoAutomaticCheck) {
vscode.window
.showWarningMessage(
`You have Cargo (panicbit.cargo) enabled with 'cargo.automaticCheck' set to true(default), ` +
"you can disable it or set {\"cargo.automaticCheck\": false} in settings.json to avoid invoke cargo twice",
"Got it"
)
.then(() => { }, console.error);
}
}
}