diff --git a/src/control.rs b/src/control.rs index 24a68d2db9835abb0b2c48144e6f0d461cb84b84..1899b1d9238df6ece15a17544eb82eae1b908d41 100644 --- a/src/control.rs +++ b/src/control.rs @@ -43,6 +43,32 @@ pub trait TermWrite { fn hide_cursor(&mut self) -> io::Result<usize> { self.csi(b"?25l") } + /// Move the cursor `num` spaces to the left. + fn move_cursor_left(&mut self, num: u32) -> io::Result<usize> { + if num > 0 { + self.csi(&[b'0' + (num / 10000) as u8, + b'0' + (num / 1000) as u8 % 10, + b'0' + (num / 100) as u8 % 10, + b'0' + (num / 10) as u8 % 10, + b'0' + num as u8 % 10, + b'C']) + } else { + Ok(0) + } + } + /// Move the cursor `num` spaces to the right. + fn move_cursor_right(&mut self, num: u32) -> io::Result<usize> { + if num > 0 { + self.csi(&[b'0' + (num / 10000) as u8, + b'0' + (num / 1000) as u8 % 10, + b'0' + (num / 100) as u8 % 10, + b'0' + (num / 10) as u8 % 10, + b'0' + num as u8 % 10, + b'D']) + } else { + Ok(0) + } + } // TODO // fn mode