fix: prioritize diagnostics over repository number colors
This commit is contained in:
+39
-4
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user