diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index 469233e1..ea969f85 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -888,6 +888,10 @@ impl Application { self.lsp_progress.end_progress(server_id, &token); if !self.lsp_progress.is_progressing(server_id) { editor_view.spinners_mut().get_or_create(server_id).stop(); + handlers::diagnostics::request_all_document_diagnostics_for_language_server( + &mut self.editor, + server_id, + ); } self.editor.clear_status(); @@ -932,6 +936,10 @@ impl Application { self.lsp_progress.end_progress(server_id, &token); if !self.lsp_progress.is_progressing(server_id) { editor_view.spinners_mut().get_or_create(server_id).stop(); + handlers::diagnostics::request_all_document_diagnostics_for_language_server( + &mut self.editor, + server_id, + ); }; } } @@ -1122,22 +1130,11 @@ impl Application { Ok(json!(result)) } Ok(MethodCall::WorkspaceDiagnosticRefresh) => { - let language_server = language_server!().id(); - - let documents: Vec<_> = self - .editor - .documents - .values() - .filter(|x| x.supports_language_server(language_server)) - .map(|x| x.id()) - .collect(); - - for document in documents { - handlers::diagnostics::request_document_diagnostics( - &mut self.editor, - document, - ); - } + let server_id = language_server!().id(); + handlers::diagnostics::request_all_document_diagnostics_for_language_server( + &mut self.editor, + server_id, + ); Ok(serde_json::Value::Null) } diff --git a/helix-term/src/handlers/diagnostics.rs b/helix-term/src/handlers/diagnostics.rs index 1a39073a..ce3b6e6b 100644 --- a/helix-term/src/handlers/diagnostics.rs +++ b/helix-term/src/handlers/diagnostics.rs @@ -258,6 +258,21 @@ fn request_document_diagnostics_for_language_severs( }); } +pub fn request_all_document_diagnostics_for_language_server( + editor: &mut Editor, + server_id: LanguageServerId, +) { + let doc_ids: Vec<_> = editor + .documents + .values() + .filter(|doc| doc.supports_language_server(server_id)) + .map(|doc| doc.id()) + .collect(); + for doc_id in doc_ids { + request_document_diagnostics(editor, doc_id); + } +} + pub fn request_document_diagnostics(editor: &mut Editor, doc_id: DocumentId) { let Some(doc) = editor.document(doc_id) else { return;