diff --git a/src/tab.rs b/src/tab.rs index 2677e3732..81ac309b1 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -555,8 +555,7 @@ impl Tab { terminal.y() + 1, terminal.x() + 1, pad_to_size(&vte_output, terminal.rows(), terminal.columns()) - ) - .expect("cannot write to stdout"); + ).expect("cannot write to stdout"); } } } diff --git a/src/terminal_pane/terminal_pane.rs b/src/terminal_pane/terminal_pane.rs index fda74c2ae..096e98366 100644 --- a/src/terminal_pane/terminal_pane.rs +++ b/src/terminal_pane/terminal_pane.rs @@ -1,6 +1,6 @@ #![allow(clippy::clippy::if_same_then_else)] -use crate::tab::Pane; +use crate::{tab::Pane, utils::shared::ansi_len}; use ::nix::pty::Winsize; use ::std::os::unix::io::RawFd; use ::vte::Perform; diff --git a/src/utils/shared.rs b/src/utils/shared.rs index 3b8b5fbd2..f5d4c303e 100644 --- a/src/utils/shared.rs +++ b/src/utils/shared.rs @@ -1,15 +1,15 @@ -use std::iter; +use std::{iter, str::from_utf8}; use strip_ansi_escapes::strip; // FIXME: Should this be an extension trait? Or here at all? pub fn ansi_len(s: &str) -> usize { - strip(s.as_bytes()).unwrap().len() + from_utf8(&strip(s.as_bytes()).unwrap()).unwrap().chars().count() } pub fn pad_to_size(s: &str, rows: usize, columns: usize) -> String { s.lines() - .map(|l| [l, &str::repeat(" ", dbg!(columns) - dbg!(ansi_len(l)))].concat()) + .map(|l| [l, &str::repeat(" ", columns - ansi_len(l))].concat()) .chain(iter::repeat(str::repeat(" ", columns))) .take(rows) .collect::>()