Unnamed repository; edit this file 'description' to name the repository.
take into account excludeDirs when computing linked_projects
Bernardo Uriarte 2022-05-21
parent 7009e5a · commit 1ee8fef
-rw-r--r--crates/rust-analyzer/src/config.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index d7ae4c72f5..d7e6c8a82a 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -694,7 +694,22 @@ impl Config {
match self.data.linkedProjects.as_slice() {
[] => match self.discovered_projects.as_ref() {
Some(discovered_projects) => {
- discovered_projects.iter().cloned().map(LinkedProject::from).collect()
+ let exclude_dirs: Vec<_> = self
+ .data
+ .files_excludeDirs
+ .iter()
+ .map(|p| self.root_path.join(p))
+ .collect();
+ discovered_projects
+ .iter()
+ .filter(|p| {
+ let (ProjectManifest::ProjectJson(path)
+ | ProjectManifest::CargoToml(path)) = p;
+ !exclude_dirs.iter().any(|p| path.starts_with(p))
+ })
+ .cloned()
+ .map(LinkedProject::from)
+ .collect()
}
None => Vec::new(),
},