diff options
Diffstat (limited to 'crates/ra_lsp_server/src/world.rs')
-rw-r--r-- | crates/ra_lsp_server/src/world.rs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/crates/ra_lsp_server/src/world.rs b/crates/ra_lsp_server/src/world.rs index b57cdf925..a8aafe5cb 100644 --- a/crates/ra_lsp_server/src/world.rs +++ b/crates/ra_lsp_server/src/world.rs | |||
@@ -9,13 +9,13 @@ use parking_lot::RwLock; | |||
9 | use ra_ide_api::{ | 9 | use ra_ide_api::{ |
10 | Analysis, AnalysisChange, AnalysisHost, CrateGraph, FileId, LibraryData, SourceRootId, | 10 | Analysis, AnalysisChange, AnalysisHost, CrateGraph, FileId, LibraryData, SourceRootId, |
11 | }; | 11 | }; |
12 | use ra_vfs::{Vfs, VfsChange, VfsFile, VfsRoot}; | 12 | use ra_vfs::{RootEntry, Vfs, VfsChange, VfsFile, VfsRoot}; |
13 | use ra_vfs_glob::RustPackageFilterBuilder; | ||
13 | use relative_path::RelativePathBuf; | 14 | use relative_path::RelativePathBuf; |
14 | 15 | ||
15 | use crate::{ | 16 | use crate::{ |
16 | main_loop::pending_requests::{CompletedRequest, LatestRequests}, | 17 | main_loop::pending_requests::{CompletedRequest, LatestRequests}, |
17 | project_model::ProjectWorkspace, | 18 | project_model::ProjectWorkspace, |
18 | vfs_filter::IncludeRustFiles, | ||
19 | LspError, Result, | 19 | LspError, Result, |
20 | }; | 20 | }; |
21 | 21 | ||
@@ -61,9 +61,21 @@ impl WorldState { | |||
61 | let mut change = AnalysisChange::new(); | 61 | let mut change = AnalysisChange::new(); |
62 | 62 | ||
63 | let mut roots = Vec::new(); | 63 | let mut roots = Vec::new(); |
64 | roots.extend(folder_roots.iter().cloned().map(IncludeRustFiles::member)); | 64 | roots.extend(folder_roots.iter().map(|path| { |
65 | RootEntry::new( | ||
66 | path.clone(), | ||
67 | RustPackageFilterBuilder::default().set_member(true).into_vfs_filter(), | ||
68 | ) | ||
69 | })); | ||
65 | for ws in workspaces.iter() { | 70 | for ws in workspaces.iter() { |
66 | roots.extend(IncludeRustFiles::from_roots(ws.to_roots())); | 71 | roots.extend(ws.to_roots().into_iter().map(|pkg_root| { |
72 | RootEntry::new( | ||
73 | pkg_root.path().clone(), | ||
74 | RustPackageFilterBuilder::default() | ||
75 | .set_member(pkg_root.is_member()) | ||
76 | .into_vfs_filter(), | ||
77 | ) | ||
78 | })); | ||
67 | } | 79 | } |
68 | 80 | ||
69 | let (mut vfs, vfs_roots) = Vfs::new(roots); | 81 | let (mut vfs, vfs_roots) = Vfs::new(roots); |