aboutsummaryrefslogtreecommitdiffstats
path: root/src/cursor.rs
diff options
context:
space:
mode:
authorJonas Maier <>2026-05-24 18:02:04 +0200
committerJonas Maier <>2026-05-24 18:02:04 +0200
commit01a198b8ad42680c9333039c75317d1787120c78 (patch)
tree96fac6e66a4f454ba0d6a4fc6d61226346c3258a /src/cursor.rs
parent52e97864d483f1f442e96058a17c159c5be10db3 (diff)
downloadpish-01a198b8ad42680c9333039c75317d1787120c78.tar.gz
better multiline handling
Diffstat (limited to 'src/cursor.rs')
-rw-r--r--src/cursor.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/cursor.rs b/src/cursor.rs
index 1ec23d5..959b15f 100644
--- a/src/cursor.rs
+++ b/src/cursor.rs
@@ -1,4 +1,4 @@
-use std::io::Write;
+use std::io::{self, Write};
#[derive(Debug, Clone, Copy)]
pub enum Direction {
@@ -41,3 +41,21 @@ pub struct CursorPos {
pub row: usize,
pub col: usize,
}
+
+impl Default for CursorPos {
+ fn default() -> Self {
+ Self { row: 1, col: 1 }
+ }
+}
+
+impl CursorPos {
+ pub fn f_go_to(&self, stdout: &mut dyn Write) -> std::io::Result<()> {
+ write!(stdout, "\x1b[{};{}H", self.row, self.col)
+ }
+
+ pub fn go_to(&self) {
+ let mut stdout = io::stdout().lock();
+ self.f_go_to(&mut stdout).unwrap();
+ stdout.flush().unwrap();
+ }
+}