mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 13:33:31 +00:00
feat: add conflict ext (panicbit.cargo) detect
This commit is contained in:
parent
3f4c6dac3d
commit
e15f40e842
1 changed files with 29 additions and 11 deletions
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue