diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-02 14:39:53 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-02 14:39:53 -0400 |
commit | 031e1936c74463f187d012238bcf6b187e3c1a1f (patch) | |
tree | ed8687dc9c796accbe12414b27dcca30d76cf011 | |
parent | 2e98a0d7f91691f2f5b693eb3a0434ca711e8193 (diff) | |
download | vt100-rust-031e1936c74463f187d012238bcf6b187e3c1a1f.tar.gz vt100-rust-031e1936c74463f187d012238bcf6b187e3c1a1f.zip |
simplify
-rw-r--r-- | src/screen.rs | 55 |
1 files changed, 28 insertions, 27 deletions
diff --git a/src/screen.rs b/src/screen.rs index f895b49..df619a6 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -118,8 +118,10 @@ impl State { self.grid_mut().cell_mut(pos) } - fn current_cell_mut(&mut self) -> Option<&mut crate::cell::Cell> { - self.grid_mut().current_cell_mut() + fn current_cell_mut(&mut self) -> &mut crate::cell::Cell { + self.grid_mut() + .current_cell_mut() + .expect("cursor not pointing to a cell") } fn enter_alternate_grid(&mut self) { @@ -194,40 +196,39 @@ impl State { let width = crate::unicode::char_width(c); let attrs = self.attrs; + self.grid_mut().col_wrap(width as u16); - if let Some(cell) = self.current_cell_mut() { - if width == 0 { - if pos.col > 0 { + let cell = self.current_cell_mut(); + + if width == 0 { + if pos.col > 0 { + let prev_cell = self + .cell_mut(crate::grid::Pos { + row: pos.row, + col: pos.col - 1, + }) + .unwrap(); + prev_cell.append(c); + } else if pos.row > 0 { + let prev_row = self + .row(crate::grid::Pos { + row: pos.row - 1, + col: 0, + }) + .unwrap(); + if prev_row.wrapped() { let prev_cell = self .cell_mut(crate::grid::Pos { - row: pos.row, - col: pos.col - 1, - }) - .unwrap(); - prev_cell.append(c); - } else if pos.row > 0 { - let prev_row = self - .row(crate::grid::Pos { row: pos.row - 1, - col: 0, + col: self.grid().size().cols - 1, }) .unwrap(); - if prev_row.wrapped() { - let prev_cell = self - .cell_mut(crate::grid::Pos { - row: pos.row - 1, - col: self.grid().size().cols - 1, - }) - .unwrap(); - prev_cell.append(c); - } + prev_cell.append(c); } - } else { - cell.set(c.to_string(), attrs); - self.grid_mut().col_inc(width as u16); } } else { - panic!("couldn't find current cell") + cell.set(c.to_string(), attrs); + self.grid_mut().col_inc(width as u16); } } |