aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src/world.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_lsp_server/src/world.rs')
-rw-r--r--crates/ra_lsp_server/src/world.rs24
1 files changed, 13 insertions, 11 deletions
diff --git a/crates/ra_lsp_server/src/world.rs b/crates/ra_lsp_server/src/world.rs
index a8aafe5cb..9990ef62e 100644
--- a/crates/ra_lsp_server/src/world.rs
+++ b/crates/ra_lsp_server/src/world.rs
@@ -10,7 +10,7 @@ use ra_ide_api::{
10 Analysis, AnalysisChange, AnalysisHost, CrateGraph, FileId, LibraryData, SourceRootId, 10 Analysis, AnalysisChange, AnalysisHost, CrateGraph, FileId, LibraryData, SourceRootId,
11}; 11};
12use ra_vfs::{RootEntry, Vfs, VfsChange, VfsFile, VfsRoot}; 12use ra_vfs::{RootEntry, Vfs, VfsChange, VfsFile, VfsRoot};
13use ra_vfs_glob::RustPackageFilterBuilder; 13use ra_vfs_glob::{Glob, RustPackageFilterBuilder};
14use relative_path::RelativePathBuf; 14use relative_path::RelativePathBuf;
15 15
16use crate::{ 16use crate::{
@@ -56,25 +56,27 @@ impl WorldState {
56 folder_roots: Vec<PathBuf>, 56 folder_roots: Vec<PathBuf>,
57 workspaces: Vec<ProjectWorkspace>, 57 workspaces: Vec<ProjectWorkspace>,
58 lru_capacity: Option<usize>, 58 lru_capacity: Option<usize>,
59 exclude_globs: &[Glob],
59 options: Options, 60 options: Options,
60 ) -> WorldState { 61 ) -> WorldState {
61 let mut change = AnalysisChange::new(); 62 let mut change = AnalysisChange::new();
62 63
63 let mut roots = Vec::new(); 64 let mut roots = Vec::new();
64 roots.extend(folder_roots.iter().map(|path| { 65 roots.extend(folder_roots.iter().map(|path| {
65 RootEntry::new( 66 let mut filter = RustPackageFilterBuilder::default().set_member(true);
66 path.clone(), 67 for glob in exclude_globs.iter() {
67 RustPackageFilterBuilder::default().set_member(true).into_vfs_filter(), 68 filter = filter.exclude(glob.clone());
68 ) 69 }
70 RootEntry::new(path.clone(), filter.into_vfs_filter())
69 })); 71 }));
70 for ws in workspaces.iter() { 72 for ws in workspaces.iter() {
71 roots.extend(ws.to_roots().into_iter().map(|pkg_root| { 73 roots.extend(ws.to_roots().into_iter().map(|pkg_root| {
72 RootEntry::new( 74 let mut filter =
73 pkg_root.path().clone(), 75 RustPackageFilterBuilder::default().set_member(pkg_root.is_member());
74 RustPackageFilterBuilder::default() 76 for glob in exclude_globs.iter() {
75 .set_member(pkg_root.is_member()) 77 filter = filter.exclude(glob.clone());
76 .into_vfs_filter(), 78 }
77 ) 79 RootEntry::new(pkg_root.path().clone(), filter.into_vfs_filter())
78 })); 80 }));
79 } 81 }
80 82