aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-02 14:39:53 -0400
committerJesse Luehrs <doy@tozt.net>2019-11-02 14:39:53 -0400
commit031e1936c74463f187d012238bcf6b187e3c1a1f (patch)
treeed8687dc9c796accbe12414b27dcca30d76cf011
parent2e98a0d7f91691f2f5b693eb3a0434ca711e8193 (diff)
downloadvt100-rust-031e1936c74463f187d012238bcf6b187e3c1a1f.tar.gz
vt100-rust-031e1936c74463f187d012238bcf6b187e3c1a1f.zip
simplify
-rw-r--r--src/screen.rs55
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);
}
}