aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/screen.rs23
-rw-r--r--tests/text.rs4
2 files changed, 9 insertions, 18 deletions
diff --git a/src/screen.rs b/src/screen.rs
index f8844aa..8bb8b0e 100644
--- a/src/screen.rs
+++ b/src/screen.rs
@@ -636,9 +636,13 @@ impl Screen {
let wrap_width = if width == 0 { 1 } else { width };
// it doesn't make any sense to wrap if the last column in a row
- // didn't already have contents (but if a wide character wraps because
- // there was only one column left in the previous row, that should
- // still count)
+ // didn't already have contents. don't try to handle the case where a
+ // character wraps because there was only one column left in the
+ // previous row - literally everything handles this case differently,
+ // and this is tmux behavior (and also the simplest). i'm open to
+ // reconsidering this behavior, but only with a really good reason
+ // (xterm handles this by introducing the concept of triple width
+ // cells, which i really don't want to do).
let mut wrap = false;
if pos.col > size.cols - wrap_width {
let last_cell = self
@@ -650,19 +654,6 @@ impl Screen {
if last_cell.has_contents() || last_cell.is_wide_continuation() {
wrap = true;
}
- if wrap_width > 1 {
- let last_last_cell = self
- .drawing_cell(crate::grid::Pos {
- row: pos.row,
- col: size.cols - 2,
- })
- .unwrap();
- if last_last_cell.has_contents()
- || last_last_cell.is_wide_continuation()
- {
- wrap = true;
- }
- }
}
self.grid_mut().col_wrap(wrap_width, wrap);
diff --git a/tests/text.rs b/tests/text.rs
index 74001d1..087755a 100644
--- a/tests/text.rs
+++ b/tests/text.rs
@@ -219,10 +219,10 @@ fn wrap() {
assert_eq!(parser.screen().contents(), "0123456789012345678901234567890123456789012345678901234567890123456789012345678");
assert_eq!(parser.screen().cursor_position(), (0, 79));
parser.process("ネ".as_bytes());
- assert_eq!(parser.screen().contents(), "0123456789012345678901234567890123456789012345678901234567890123456789012345678ネ");
+ assert_eq!(parser.screen().contents(), "0123456789012345678901234567890123456789012345678901234567890123456789012345678\nネ");
assert_eq!(parser.screen().cursor_position(), (1, 2));
parser.process(b"a");
- assert_eq!(parser.screen().contents(), "0123456789012345678901234567890123456789012345678901234567890123456789012345678ネa");
+ assert_eq!(parser.screen().contents(), "0123456789012345678901234567890123456789012345678901234567890123456789012345678\nネa");
assert_eq!(parser.screen().cursor_position(), (1, 3));
assert_eq!(parser.screen().cell(0, 77).unwrap().contents(), "7");
assert_eq!(parser.screen().cell(0, 78).unwrap().contents(), "8");