consistent diagnostic sorting

pull/9024/head
Pascal Kuthe 2 years ago committed by Blaž Hrastnik
parent 515ef17207
commit 783ff27b1b

@ -907,7 +907,9 @@ impl Application {
// Sort diagnostics first by severity and then by line numbers. // Sort diagnostics first by severity and then by line numbers.
// Note: The `lsp::DiagnosticSeverity` enum is already defined in decreasing order // Note: The `lsp::DiagnosticSeverity` enum is already defined in decreasing order
diagnostics.sort_unstable_by_key(|(d, _)| (d.severity, d.range.start)); diagnostics.sort_unstable_by_key(|(d, server_id)| {
(d.severity, d.range.start, *server_id)
});
} }
Notification::ShowMessage(params) => { Notification::ShowMessage(params) => {
log::warn!("unhandled window/showMessage: {:?}", params); log::warn!("unhandled window/showMessage: {:?}", params);

@ -1240,8 +1240,13 @@ impl Document {
true true
}); });
self.diagnostics self.diagnostics.sort_unstable_by_key(|diagnostic| {
.sort_unstable_by_key(|diagnostic| diagnostic.range); (
diagnostic.range,
diagnostic.severity,
diagnostic.language_server_id,
)
});
// Update the inlay hint annotations' positions, helping ensure they are displayed in the proper place // Update the inlay hint annotations' positions, helping ensure they are displayed in the proper place
let apply_inlay_hint_changes = |annotations: &mut Rc<[InlineAnnotation]>| { let apply_inlay_hint_changes = |annotations: &mut Rc<[InlineAnnotation]>| {
@ -1738,8 +1743,13 @@ impl Document {
}); });
} }
self.diagnostics.extend(diagnostics); self.diagnostics.extend(diagnostics);
self.diagnostics self.diagnostics.sort_unstable_by_key(|diagnostic| {
.sort_unstable_by_key(|diagnostic| diagnostic.range); (
diagnostic.range,
diagnostic.severity,
diagnostic.language_server_id,
)
});
} }
pub fn clear_diagnostics(&mut self, language_server_id: usize) { pub fn clear_diagnostics(&mut self, language_server_id: usize) {

Loading…
Cancel
Save