Unnamed repository; edit this file 'description' to name the repository.
fix: Fix flycheck workspace when requested but package was found
Lukas Wirth 2024-12-22
parent 066284a · commit 4a86434
-rw-r--r--crates/rust-analyzer/src/handlers/notification.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/crates/rust-analyzer/src/handlers/notification.rs b/crates/rust-analyzer/src/handlers/notification.rs
index 83c425bd71..c0231fd04e 100644
--- a/crates/rust-analyzer/src/handlers/notification.rs
+++ b/crates/rust-analyzer/src/handlers/notification.rs
@@ -293,7 +293,6 @@ fn run_flycheck(state: &mut GlobalState, vfs_path: VfsPath) -> bool {
let file_id = state.vfs.read().0.file_id(&vfs_path);
if let Some(file_id) = file_id {
let world = state.snapshot();
- let source_root_id = world.analysis.source_root_id(file_id).ok();
let may_flycheck_workspace = state.config.flycheck_workspace(None);
let mut updated = false;
let task = move || -> std::result::Result<(), ide::Cancelled> {
@@ -376,16 +375,17 @@ fn run_flycheck(state: &mut GlobalState, vfs_path: VfsPath) -> bool {
let saved_file = vfs_path.as_path().map(|p| p.to_owned());
// Find and trigger corresponding flychecks
- for flycheck in world.flycheck.iter() {
+ 'flychecks: for flycheck in world.flycheck.iter() {
for (id, package) in workspace_ids.clone() {
if id == flycheck.id() {
updated = true;
- match package.filter(|_| !world.config.flycheck_workspace(source_root_id)) {
- Some(package) => flycheck
- .restart_for_package(package, target.clone().map(TupleExt::head)),
- None => flycheck.restart_workspace(saved_file.clone()),
+ if may_flycheck_workspace {
+ flycheck.restart_workspace(saved_file.clone())
+ } else if let Some(package) = package {
+ flycheck
+ .restart_for_package(package, target.clone().map(TupleExt::head))
}
- continue;
+ continue 'flychecks;
}
}
}