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.rs20
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;
9use ra_ide_api::{ 9use ra_ide_api::{
10 Analysis, AnalysisChange, AnalysisHost, CrateGraph, FileId, LibraryData, SourceRootId, 10 Analysis, AnalysisChange, AnalysisHost, CrateGraph, FileId, LibraryData, SourceRootId,
11}; 11};
12use ra_vfs::{Vfs, VfsChange, VfsFile, VfsRoot}; 12use ra_vfs::{RootEntry, Vfs, VfsChange, VfsFile, VfsRoot};
13use ra_vfs_glob::RustPackageFilterBuilder;
13use relative_path::RelativePathBuf; 14use relative_path::RelativePathBuf;
14 15
15use crate::{ 16use 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);