diff options
| author | bors <bors@rust-lang.org> | 2022-11-11 12:01:52 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-11-11 12:01:52 +0000 |
| commit | ff78d24e21fe999c65aeec825f3bbb02c1ec5a4c (patch) | |
| tree | 6850d15d39a391e5d44187363c1a86f3a502903f | |
| parent | 599142c34abad1442994947bd1200ce0bc973c54 (diff) | |
| parent | e35836eb811a99872fdf63f1f0f1046ee651eeb0 (diff) | |
| download | rust-ff78d24e21fe999c65aeec825f3bbb02c1ec5a4c.tar.gz rust-ff78d24e21fe999c65aeec825f3bbb02c1ec5a4c.zip | |
Auto merge of #13603 - Veykril:no-workspaces, r=Veykril
fix: Send status notification if there are no found workspaces Closes https://github.com/rust-lang/rust-analyzer/issues/5829
| -rw-r--r-- | crates/rust-analyzer/src/reload.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index e1f651786de..407416d9f40 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -106,6 +106,14 @@ impl GlobalState { status.health = lsp_ext::Health::Error; status.message = Some(error) } + + if self.config.linked_projects().is_empty() + && self.config.detached_files().is_empty() + && self.config.notifications().cargo_toml_not_found + { + status.health = lsp_ext::Health::Warning; + status.message = Some("Workspace reload required".to_string()) + } status } @@ -427,9 +435,14 @@ impl GlobalState { fn fetch_workspace_error(&self) -> Result<(), String> { let mut buf = String::new(); - for ws in self.fetch_workspaces_queue.last_op_result() { - if let Err(err) = ws { - stdx::format_to!(buf, "rust-analyzer failed to load workspace: {:#}\n", err); + let last_op_result = self.fetch_workspaces_queue.last_op_result(); + if last_op_result.is_empty() { + stdx::format_to!(buf, "rust-analyzer failed to discover workspace"); + } else { + for ws in last_op_result { + if let Err(err) = ws { + stdx::format_to!(buf, "rust-analyzer failed to load workspace: {:#}\n", err); + } } } |
