aboutsummaryrefslogtreecommitdiff
path: root/crates/rust-analyzer/src/reload.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2021-01-26 13:18:01 +0000
committerAleksey Kladov <[email protected]>2021-01-26 13:45:54 +0000
commit2870e701630c198bafb346e5a9c91c1d2fc9f092 (patch)
treecf85185c893a344bbfe29e48fcf856b630a06ec5 /crates/rust-analyzer/src/reload.rs
parenta733f65126451784c8b158d6c6318b556d68ebfc (diff)
Add config option to ignore directories
Diffstat (limited to 'crates/rust-analyzer/src/reload.rs')
-rw-r--r--crates/rust-analyzer/src/reload.rs16
1 files changed, 13 insertions, 3 deletions
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs
index dabfb4241..0507186dc 100644
--- a/crates/rust-analyzer/src/reload.rs
+++ b/crates/rust-analyzer/src/reload.rs
@@ -214,7 +214,8 @@ impl GlobalState {
214 214
215 let mut change = Change::new(); 215 let mut change = Change::new();
216 216
217 let project_folders = ProjectFolders::new(&workspaces); 217 let files_config = self.config.files();
218 let project_folders = ProjectFolders::new(&workspaces, &files_config.exclude);
218 219
219 self.proc_macro_client = match self.config.proc_macro_srv() { 220 self.proc_macro_client = match self.config.proc_macro_srv() {
220 None => None, 221 None => None,
@@ -231,7 +232,7 @@ impl GlobalState {
231 }, 232 },
232 }; 233 };
233 234
234 let watch = match self.config.files().watcher { 235 let watch = match files_config.watcher {
235 FilesWatcher::Client => vec![], 236 FilesWatcher::Client => vec![],
236 FilesWatcher::Notify => project_folders.watch, 237 FilesWatcher::Notify => project_folders.watch,
237 }; 238 };
@@ -319,7 +320,10 @@ pub(crate) struct ProjectFolders {
319} 320}
320 321
321impl ProjectFolders { 322impl ProjectFolders {
322 pub(crate) fn new(workspaces: &[ProjectWorkspace]) -> ProjectFolders { 323 pub(crate) fn new(
324 workspaces: &[ProjectWorkspace],
325 global_excludes: &[AbsPathBuf],
326 ) -> ProjectFolders {
323 let mut res = ProjectFolders::default(); 327 let mut res = ProjectFolders::default();
324 let mut fsc = FileSetConfig::builder(); 328 let mut fsc = FileSetConfig::builder();
325 let mut local_filesets = vec![]; 329 let mut local_filesets = vec![];
@@ -333,6 +337,12 @@ impl ProjectFolders {
333 dirs.extensions.push("rs".into()); 337 dirs.extensions.push("rs".into());
334 dirs.include.extend(root.include); 338 dirs.include.extend(root.include);
335 dirs.exclude.extend(root.exclude); 339 dirs.exclude.extend(root.exclude);
340 for excl in global_excludes {
341 if dirs.include.iter().any(|incl| incl.starts_with(excl)) {
342 dirs.exclude.push(excl.clone());
343 }
344 }
345
336 vfs::loader::Entry::Directories(dirs) 346 vfs::loader::Entry::Directories(dirs)
337 }; 347 };
338 348