From ea7af04e529bf79cd867ad78e682b747dc991280 Mon Sep 17 00:00:00 2001 From: mars Date: Tue, 11 Apr 2023 16:32:07 -0400 Subject: [PATCH] Trim lines to column num --- src/main.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 94690b6..eb46ce1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,6 +16,8 @@ * along with this program. If not, see https://www.gnu.org/licenses/. */ +use std::io::{stdout, Stdout, Write}; + use std::io::{ stdin, stdout, Read, Stdout, Write }; use crossterm::{ @@ -41,16 +43,19 @@ impl Buffer { pub fn draw(&self, out: &mut (impl ExecutableCommand + Write)) -> Result { let (cols, rows) = terminal::size()?; let lr_width = self.text.len_lines().ilog10() + 1; + let gutter_width = lr_width + 1; out.execute(cursor::MoveTo(0, 0))?; for (row, line) in (0..rows).zip(self.text.lines()) { write!(out, "{:width$} ", row, width = lr_width as usize)?; - write!(out, "{}", line.as_str().unwrap_or("").trim_end())?; + let width = line.len_chars().saturating_sub(1); // lop off whitespace + let rhs = width.min(cols as usize - gutter_width as usize); + write!(out, "{}", line.slice(0..rhs))?; out.execute(cursor::MoveToNextLine(1))?; } - Ok(lr_width + 1) + Ok(gutter_width) } pub fn clamped_cursor(&self, cursor: Cursor) -> Cursor {