perf(statusline): reorder match and specify `u32` for `workspace_diagnostics` (#13512)

pull/12185/head^2
RoloEdits 2025-05-12 06:27:04 -07:00 committed by GitHub
parent 908b9edf28
commit 47547e94ad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 4 deletions

View File

@ -287,14 +287,19 @@ where
{
use helix_core::diagnostic::Severity;
let (hints, info, warnings, errors) = context.editor.diagnostics.values().flatten().fold(
(0, 0, 0, 0),
(0u32, 0u32, 0u32, 0u32),
|mut counts, (diag, _)| {
match diag.severity {
Some(DiagnosticSeverity::HINT) | None => counts.0 += 1,
Some(DiagnosticSeverity::INFORMATION) => counts.1 += 1,
// PERF: For large workspace diagnostics, this loop can be very tight.
//
// Most often the diagnostics will be for warnings and errors.
// Errors should tend to be fixed fast, leaving warnings as the most common.
Some(DiagnosticSeverity::WARNING) => counts.2 += 1,
Some(DiagnosticSeverity::ERROR) => counts.3 += 1,
_ => {}
Some(DiagnosticSeverity::HINT) => counts.0 += 1,
Some(DiagnosticSeverity::INFORMATION) => counts.1 += 1,
// Fallback to `hint`.
_ => counts.0 += 1,
}
counts
},