fix: add spacing between line numbers and repository markers

This commit is contained in:
2026-10-13 21:02:34 +02:00
parent fd59c05f80
commit e90d1c3945
4 changed files with 19 additions and 16 deletions
+15 -12
View File
@@ -1515,7 +1515,7 @@ fn draw_document(
editor.gutter_style(),
crate::gutter::GutterStyle::Bar | crate::gutter::GutterStyle::Symbols
);
let gutter_width = (digits + 1 + usize::from(marker_gutter)) as u16;
let gutter_width = (digits + 1 + 2 * usize::from(marker_gutter)) as u16;
let [gutter, viewport] = Layout::horizontal([
Constraint::Length(if viewport.width > gutter_width {
gutter_width
@@ -1787,8 +1787,9 @@ fn draw_document(
};
let mut spans = vec![Span::styled(format!("{number:>digits$}"), style)];
if marker_gutter {
spans.push(Span::raw(" "));
let marker = match (editor.gutter_style(), change) {
(crate::gutter::GutterStyle::Bar, Some(_)) => "▐",
(crate::gutter::GutterStyle::Bar, Some(_)) => "▌",
(_, Some(crate::gutter::Change::Added)) => "+",
(_, Some(crate::gutter::Change::Removed)) => "-",
(_, Some(crate::gutter::Change::Modified)) => "~",
@@ -14240,7 +14241,7 @@ end
],
));
for (mode, marker) in [
(GutterStyle::Bar, "▐"),
(GutterStyle::Bar, "▌"),
(GutterStyle::Symbols, "+"),
(GutterStyle::LineNumbers, ""),
(GutterStyle::None, ""),
@@ -14253,20 +14254,22 @@ end
.unwrap();
let viewport = views.panels.caret.unwrap().0;
let markers = matches!(mode, GutterStyle::Bar | GutterStyle::Symbols);
assert_eq!(viewport.x, if markers { 3 } else { 2 });
assert_eq!(viewport.x, if markers { 4 } else { 2 });
let buffer = terminal.backend().buffer();
assert_eq!(buffer[(viewport.x - 1, viewport.y)].symbol(), " ");
if markers {
assert_eq!(buffer[(1, viewport.y)].symbol(), marker);
assert_eq!(buffer[(1, viewport.y)].symbol(), " ");
assert_eq!(buffer[(2, viewport.y)].symbol(), marker);
for (offset, color) in [Color::Green, Color::Red, Color::Yellow]
.into_iter()
.enumerate()
{
assert_eq!(buffer[(1, viewport.y + offset as u16)].fg, color);
assert_eq!(buffer[(1, viewport.y + offset as u16)].symbol(), " ");
assert_eq!(buffer[(2, viewport.y + offset as u16)].fg, color);
}
if mode == GutterStyle::Symbols {
assert_eq!(buffer[(1, viewport.y + 1)].symbol(), "-");
assert_eq!(buffer[(1, viewport.y + 2)].symbol(), "~");
assert_eq!(buffer[(2, viewport.y + 1)].symbol(), "-");
assert_eq!(buffer[(2, viewport.y + 2)].symbol(), "~");
}
} else if mode == GutterStyle::LineNumbers {
assert_eq!(buffer[(0, viewport.y)].fg, Color::Cyan);
@@ -14286,10 +14289,10 @@ end
assert!(scrolled_views.offsets[&editor.buffer_id()].1 > 0);
let text_area = scrolled_views.panels.caret.unwrap().0;
assert_eq!(
scrolled_terminal.backend().buffer()[(1, text_area.y)].symbol(),
scrolled_terminal.backend().buffer()[(2, text_area.y)].symbol(),
"+"
);
assert_eq!(text_area.x, 3);
assert_eq!(text_area.x, 4);
editor.handle(Input::Home);
editor.execute("word_wrap.toggle");
let mut views = BufferViewports::default();
@@ -14324,11 +14327,11 @@ end
_ => " ",
};
assert_eq!(
terminal.backend().buffer()[(1, viewport.y + screen as u16)].symbol(),
terminal.backend().buffer()[(2, viewport.y + screen as u16)].symbol(),
expected
);
}
for width in [1, 2, 3] {
for width in [1, 2, 3, 4] {
let mut terminal = Terminal::new(ratatui::backend::TestBackend::new(width, 3)).unwrap();
terminal
.draw(|frame| views.draw(frame, &mut editor))