diff options
-rw-r--r-- | src/screen.rs | 23 | ||||
-rw-r--r-- | tests/text.rs | 4 |
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"); |