Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/load-cargo/src/lib.rs')
-rw-r--r--crates/load-cargo/src/lib.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/crates/load-cargo/src/lib.rs b/crates/load-cargo/src/lib.rs
index 0e1606a699..cf26845b11 100644
--- a/crates/load-cargo/src/lib.rs
+++ b/crates/load-cargo/src/lib.rs
@@ -123,7 +123,7 @@ pub fn load_workspace(
.collect()
};
- let project_folders = ProjectFolders::new(std::slice::from_ref(&ws), &[]);
+ let project_folders = ProjectFolders::new(std::slice::from_ref(&ws), &[], None);
loader.set_config(vfs::loader::Config {
load: project_folders.load,
watch: vec![],
@@ -153,7 +153,11 @@ pub struct ProjectFolders {
}
impl ProjectFolders {
- pub fn new(workspaces: &[ProjectWorkspace], global_excludes: &[AbsPathBuf]) -> ProjectFolders {
+ pub fn new(
+ workspaces: &[ProjectWorkspace],
+ global_excludes: &[AbsPathBuf],
+ user_config_dir_path: Option<&AbsPath>,
+ ) -> ProjectFolders {
let mut res = ProjectFolders::default();
let mut fsc = FileSetConfig::builder();
let mut local_filesets = vec![];
@@ -291,6 +295,22 @@ impl ProjectFolders {
}
}
+ if let Some(user_config_path) = user_config_dir_path {
+ let ratoml_path = {
+ let mut p = user_config_path.to_path_buf();
+ p.push("rust-analyzer.toml");
+ p
+ };
+
+ let file_set_roots = vec![VfsPath::from(ratoml_path.to_owned())];
+ let entry = vfs::loader::Entry::Files(vec![ratoml_path.to_owned()]);
+
+ res.watch.push(res.load.len());
+ res.load.push(entry);
+ local_filesets.push(fsc.len() as u64);
+ fsc.add_file_set(file_set_roots)
+ }
+
let fsc = fsc.build();
res.source_root_config = SourceRootConfig { fsc, local_filesets };