mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 17:36:19 +04:00
Update diagnostics correctly on LSP exit (#7111)
* chore: avoid format! call with argument when useless * feat: also clear diagnostics for unopened documents when exiting an LSP * feat: we already worked on `self.editor.diagnostics` no need to redo the checks
This commit is contained in:
parent
6043c3c3db
commit
8e2660b5cc
@ -964,22 +964,18 @@ macro_rules! language_server {
|
||||
Notification::Exit => {
|
||||
self.editor.set_status("Language server exited");
|
||||
|
||||
// Clear any diagnostics for documents with this server open.
|
||||
let urls: Vec<_> = self
|
||||
.editor
|
||||
.documents_mut()
|
||||
.filter_map(|doc| {
|
||||
if doc.supports_language_server(server_id) {
|
||||
doc.clear_diagnostics(server_id);
|
||||
doc.url()
|
||||
} else {
|
||||
None
|
||||
// LSPs may produce diagnostics for files that haven't been opened in helix,
|
||||
// we need to clear those and remove the entries from the list if this leads to
|
||||
// an empty diagnostic list for said files
|
||||
for diags in self.editor.diagnostics.values_mut() {
|
||||
diags.retain(|(_, lsp_id)| *lsp_id != server_id);
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
|
||||
for url in urls {
|
||||
self.editor.diagnostics.remove(&url);
|
||||
self.editor.diagnostics.retain(|_, diags| !diags.is_empty());
|
||||
|
||||
// Clear any diagnostics for documents with this server open.
|
||||
for doc in self.editor.documents_mut() {
|
||||
doc.clear_diagnostics(server_id);
|
||||
}
|
||||
|
||||
// Remove the language server from the registry.
|
||||
|
@ -275,7 +275,7 @@ fn render_workspace_diagnostics<F>(context: &mut RenderContext, write: F)
|
||||
});
|
||||
|
||||
if warnings > 0 || errors > 0 {
|
||||
write(context, format!(" {} ", "W"), None);
|
||||
write(context, " W ".into(), None);
|
||||
}
|
||||
|
||||
if warnings > 0 {
|
||||
|
Loading…
Reference in New Issue
Block a user