activity indicator: Reset formatting failure on click (#20029)

Thorsten Ball created

Release Notes:

- N/A

Change summary

crates/activity_indicator/src/activity_indicator.rs | 5 ++++-
crates/project/src/lsp_store.rs                     | 4 ++++
crates/project/src/project.rs                       | 5 +++++
3 files changed, 13 insertions(+), 1 deletion(-)

Detailed changes

crates/activity_indicator/src/activity_indicator.rs 🔗

@@ -352,7 +352,10 @@ impl ActivityIndicator {
                         .into_any_element(),
                 ),
                 message: format!("Formatting failed: {}. Click to see logs.", failure),
-                on_click: Some(Arc::new(|_, cx| {
+                on_click: Some(Arc::new(|indicator, cx| {
+                    indicator.project.update(cx, |project, cx| {
+                        project.reset_last_formatting_failure(cx);
+                    });
                     cx.dispatch_action(Box::new(workspace::OpenLog));
                 })),
             });

crates/project/src/lsp_store.rs 🔗

@@ -5270,6 +5270,10 @@ impl LspStore {
         self.last_formatting_failure.as_deref()
     }
 
+    pub fn reset_last_formatting_failure(&mut self) {
+        self.last_formatting_failure = None;
+    }
+
     pub fn environment_for_buffer(
         &self,
         buffer: &Model<Buffer>,

crates/project/src/project.rs 🔗

@@ -2414,6 +2414,11 @@ impl Project {
         self.lsp_store.read(cx).last_formatting_failure()
     }
 
+    pub fn reset_last_formatting_failure(&self, cx: &mut AppContext) {
+        self.lsp_store
+            .update(cx, |store, _| store.reset_last_formatting_failure());
+    }
+
     pub fn update_diagnostics(
         &mut self,
         language_server_id: LanguageServerId,