fix: prioritize diagnostics over repository number colors

This commit is contained in:
2026-10-13 21:51:57 +02:00
parent 9526876b04
commit 142b00118a
3 changed files with 41 additions and 18 deletions
+39 -4
View File
@@ -1753,12 +1753,12 @@ fn draw_document(
} else {
Style::default().fg(Color::DarkGray)
};
let style = match editor
let diagnostic = editor
.diagnostics()
.filter(|diagnostic| diagnostic_on_row(diagnostic, row))
.map(|diagnostic| diagnostic_severity(diagnostic.severity))
.min_by_key(|(severity, _, _)| *severity)
{
.min_by_key(|(severity, _, _)| *severity);
let style = match diagnostic {
Some((_, color, _)) => style.fg(color),
None => style,
};
@@ -1780,7 +1780,9 @@ fn draw_document(
.fg(Color::Cyan)
.add_modifier(Modifier::BOLD)
} else {
color.map_or(style, |color| style.fg(color))
color
.filter(|_| diagnostic.is_none())
.map_or(style, |color| style.fg(color))
}
} else {
style
@@ -14533,6 +14535,39 @@ end
}
assert_eq!(buffer[(viewport.x, viewport.y)].symbol(), "a");
}
editor
.replace_diagnostics(
"fixture",
editor.buffer_id(),
editor.text_revision(),
vec![
annotation((0, 0), (0, 1), DiagnosticSeverity::Error, "current"),
annotation((1, 0), (1, 1), DiagnosticSeverity::Warning, "warning"),
annotation((2, 0), (2, 1), DiagnosticSeverity::Error, "error"),
],
)
.unwrap();
editor.set_gutter_style(GutterStyle::LineNumbers);
let mut views = BufferViewports::default();
let mut terminal = Terminal::new(ratatui::backend::TestBackend::new(24, 6)).unwrap();
terminal
.draw(|frame| views.draw(frame, &mut editor))
.unwrap();
let viewport = views.panels.caret.unwrap().0;
let buffer = terminal.backend().buffer();
assert_eq!(buffer[(0, viewport.y)].fg, Color::Cyan);
assert!(buffer[(0, viewport.y)].modifier.contains(Modifier::BOLD));
assert_eq!(buffer[(0, viewport.y + 1)].fg, Color::Yellow);
assert_eq!(buffer[(0, viewport.y + 2)].fg, Color::Red);
assert_eq!(buffer[(0, viewport.y + 3)].fg, Color::DarkGray);
editor
.replace_diagnostics(
"fixture",
editor.buffer_id(),
editor.text_revision(),
vec![],
)
.unwrap();
editor.set_gutter_style(GutterStyle::Symbols);
editor.handle(Input::End);
let mut scrolled_views = BufferViewports::default();