diff --git a/src/editor/terminal.rs b/src/editor/terminal.rs new file mode 100644 index 0000000..423d342 --- /dev/null +++ b/src/editor/terminal.rs @@ -0,0 +1,30 @@ +use crossterm::cursor::MoveTo; +use crossterm::execute; +use crossterm::terminal::{disable_raw_mode, enable_raw_mode, size, Clear, ClearType}; +use std::io::stdout; + +pub struct Terminal {} + +impl Terminal { + pub fn terminate() -> Result<(), std::io::Error> { + disable_raw_mode()?; + Ok(()) + } + pub fn initialize() -> Result<(), std::io::Error> { + enable_raw_mode()?; + Self::clear_screen()?; + Self::move_cursor_to(0, 0)?; + Ok(()) + } + pub fn clear_screen() -> Result<(), std::io::Error> { + execute!(stdout(), Clear(ClearType::All))?; + Ok(()) + } + pub fn move_cursor_to(x: u16, y: u16) -> Result<(), std::io::Error> { + execute!(stdout(), MoveTo(x, y))?; + Ok(()) + } + pub fn size() -> Result<(u16, u16), std::io::Error> { + size() + } +}