small software-rendered rust tty
Diffstat (limited to 'src/term.rs')
| -rw-r--r-- | src/term.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/term.rs b/src/term.rs index f337a75..e2831f0 100644 --- a/src/term.rs +++ b/src/term.rs @@ -1,3 +1,4 @@ +use ctlfun::Parameter::*; use ctlfun::TerminalInput::*; use ctlfun::{ControlFunction, TerminalInputParser}; @@ -34,11 +35,32 @@ impl Terminal { match self.p.parse_byte(x) { Continue => {} Char(x) => { + dbg!(x); self.cursor.0 += 1; self.cells[(self.cursor.1 * self.size.0 + self.cursor.0) as usize] .letter = Some(x); } + Control(ControlFunction { start: 8, .. }) => { + self.cursor.0 -= 1; + } + Control(ControlFunction { + start: b'[', + params, + end: b'K', + .. + }) if params == &[Default] => { + for cell in &mut self.cells[(self.cursor.1 * self.size.0 + + self.cursor.0 + + 1) + as usize + ..(self.cursor.1 * self.size.0 + self.size.0) as usize] + // [self.cursor.1 as usize..self.size.0 as usize] + // [self.cursor.0 as usize..] + { + cell.letter = None; + } + } Control(ControlFunction { start: b'\r', .. }) => { self.cursor.0 = 1; } @@ -46,6 +68,7 @@ impl Terminal { self.cursor.1 += 1; } Control(x) => { + dbg!(x); println!( "{} {:?} {} {}", x.start as char, |