diff options
Diffstat (limited to 'crates/ra_project_model/src/lib.rs')
-rw-r--r-- | crates/ra_project_model/src/lib.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs index 3bad4f8d3..63eb7041e 100644 --- a/crates/ra_project_model/src/lib.rs +++ b/crates/ra_project_model/src/lib.rs | |||
@@ -255,6 +255,18 @@ impl ProjectWorkspace { | |||
255 | } | 255 | } |
256 | crate_graph | 256 | crate_graph |
257 | } | 257 | } |
258 | |||
259 | pub fn workspace_root_for(&self, path: &Path) -> Option<&Path> { | ||
260 | match self { | ||
261 | ProjectWorkspace::Cargo { cargo, .. } => { | ||
262 | Some(cargo.workspace_root.as_ref()).filter(|root| path.starts_with(root)) | ||
263 | } | ||
264 | ProjectWorkspace::Json { project: JsonProject { roots, .. } } => roots | ||
265 | .iter() | ||
266 | .find(|root| path.starts_with(&root.path)) | ||
267 | .map(|root| root.path.as_ref()), | ||
268 | } | ||
269 | } | ||
258 | } | 270 | } |
259 | 271 | ||
260 | fn find_rust_project_json(path: &Path) -> Option<PathBuf> { | 272 | fn find_rust_project_json(path: &Path) -> Option<PathBuf> { |