about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2023-03-08 13:18:44 +0100
committerLukas Wirth <lukastw97@gmail.com>2023-03-08 13:18:44 +0100
commitb4bd27be9072e898b02b123e8a0803f18899ae86 (patch)
tree1791f05afce0454de7f8b4a100e14a75247f91e0
parentc9786484c51657a291571763595327e77cc594e3 (diff)
downloadrust-b4bd27be9072e898b02b123e8a0803f18899ae86.tar.gz
rust-b4bd27be9072e898b02b123e8a0803f18899ae86.zip
Don't send error notifications for workspace failures if server status is supported
-rw-r--r--crates/rust-analyzer/src/main_loop.rs8
-rw-r--r--crates/rust-analyzer/src/reload.rs4
2 files changed, 7 insertions, 5 deletions
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs
index d2797690669..60afb05bd64 100644
--- a/crates/rust-analyzer/src/main_loop.rs
+++ b/crates/rust-analyzer/src/main_loop.rs
@@ -409,12 +409,12 @@ impl GlobalState {
         if self.last_reported_status.as_ref() != Some(&status) {
             self.last_reported_status = Some(status.clone());
 
-            if let (lsp_ext::Health::Error, Some(message)) = (status.health, &status.message) {
-                self.show_message(lsp_types::MessageType::ERROR, message.clone());
-            }
-
             if self.config.server_status_notification() {
                 self.send_notification::<lsp_ext::ServerStatusNotification>(status);
+            } else {
+                if let (lsp_ext::Health::Error, Some(message)) = (status.health, &status.message) {
+                    self.show_message(lsp_types::MessageType::ERROR, message.clone());
+                }
             }
         }
 
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs
index 1a396bb06a3..2dfbb2ffb97 100644
--- a/crates/rust-analyzer/src/reload.rs
+++ b/crates/rust-analyzer/src/reload.rs
@@ -202,7 +202,9 @@ impl GlobalState {
         tracing::info!(%cause, "will switch workspaces");
 
         if let Err(error_message) = self.fetch_workspace_error() {
-            self.show_and_log_error(error_message, None);
+            if !self.config.server_status_notification() {
+                self.show_and_log_error(error_message, None);
+            }
             if !self.workspaces.is_empty() {
                 // It only makes sense to switch to a partially broken workspace
                 // if we don't have any workspace at all yet.