summaryrefslogtreecommitdiff
path: root/cli/lsp/config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/config.rs')
-rw-r--r--cli/lsp/config.rs27
1 files changed, 11 insertions, 16 deletions
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs
index da5af0c2d..4f96d45a4 100644
--- a/cli/lsp/config.rs
+++ b/cli/lsp/config.rs
@@ -1520,25 +1520,20 @@ impl ConfigData {
})
});
- let is_workspace_root = config_file
+ let workspace = config_file
.as_ref()
- .is_some_and(|c| !c.json.workspaces.is_empty());
- let workspace_members = if is_workspace_root {
+ .and_then(|c| c.json.workspace.as_ref().map(|w| (c, w)));
+ let is_workspace_root = workspace.is_some();
+ let workspace_members = if let Some((config, workspace)) = workspace {
Arc::new(
- config_file
- .as_ref()
- .map(|c| {
- c.json
- .workspaces
- .iter()
- .flat_map(|p| {
- let dir_specifier = c.specifier.join(p).ok()?;
- let dir_path = specifier_to_file_path(&dir_specifier).ok()?;
- Url::from_directory_path(normalize_path(dir_path)).ok()
- })
- .collect()
+ workspace
+ .iter()
+ .flat_map(|p| {
+ let dir_specifier = config.specifier.join(p).ok()?;
+ let dir_path = specifier_to_file_path(&dir_specifier).ok()?;
+ Url::from_directory_path(normalize_path(dir_path)).ok()
})
- .unwrap_or_default(),
+ .collect(),
)
} else if let Some(workspace_data) = workspace_root {
workspace_data.workspace_members.clone()