fix: add spacing between line numbers and repository markers
This commit is contained in:
+15
-12
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user