Unnamed repository; edit this file 'description' to name the repository.
perf(statusline): reorder match and specify `u32` for `workspace_diagnostics` (#13512)
RoloEdits 10 months ago
parent 908b9ed · commit 47547e9
-rw-r--r--helix-term/src/ui/statusline.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/helix-term/src/ui/statusline.rs b/helix-term/src/ui/statusline.rs
index adf01bda..8fb07ebe 100644
--- a/helix-term/src/ui/statusline.rs
+++ b/helix-term/src/ui/statusline.rs
@@ -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
},