From 0c104685c024a03cd857c0adcedea55b694eb604 Mon Sep 17 00:00:00 2001 From: Gokul Soumya Date: Tue, 5 Jul 2022 17:42:14 +0530 Subject: [PATCH] Sub sort diagnostics by line number --- helix-term/src/application.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index df14f5e3..d3899075 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -572,15 +572,11 @@ impl Application { doc.set_diagnostics(diagnostics); } - // Sort diagnostics first by URL and then by severity. + // Sort diagnostics first by severity and then by line numbers. // Note: The `lsp::DiagnosticSeverity` enum is already defined in decreasing order - params.diagnostics.sort_unstable_by(|a, b| { - if let (Some(a), Some(b)) = (a.severity, b.severity) { - a.partial_cmp(&b).unwrap() - } else { - std::cmp::Ordering::Equal - } - }); + params + .diagnostics + .sort_unstable_by_key(|d| (d.severity, d.range.start)); // Insert the original lsp::Diagnostics here because we may have no open document // for diagnosic message and so we can't calculate the exact position.