From 50fc850f165482a8304681e85a70ffb41dba731d Mon Sep 17 00:00:00 2001 From: Jonas Maier <> Date: Thu, 5 Mar 2026 10:27:10 +0100 Subject: allow editing of prev command with backspace --- src/linebuf.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/linebuf.rs') diff --git a/src/linebuf.rs b/src/linebuf.rs index 15a8182..1d28549 100644 --- a/src/linebuf.rs +++ b/src/linebuf.rs @@ -4,6 +4,7 @@ use std::io::Write; pub struct LineBuf { pre: Vec, post: Vec, + dirty: bool, } #[allow(unused)] @@ -12,14 +13,17 @@ impl LineBuf { Self { pre: Vec::new(), post: Vec::new(), + dirty: false, } } pub fn del_left(&mut self) -> Option { + self.dirty = true; self.pre.pop() } pub fn del_right(&mut self) -> Option { + self.dirty = true; self.post.pop() } @@ -42,6 +46,7 @@ impl LineBuf { } pub fn add(&mut self, chr: u8) { + self.dirty = true; self.pre.push(chr); } @@ -49,6 +54,10 @@ impl LineBuf { self.pre.is_empty() && self.post.is_empty() } + pub fn is_dirty(&self) -> bool { + self.dirty + } + /// sets content all to the left pub fn set_content(&mut self, buf: Vec) { self.pre = buf; @@ -60,6 +69,7 @@ impl LineBuf { while self.right() {} let mut buf = Vec::new(); core::mem::swap(&mut self.pre, &mut buf); + self.dirty = false; buf } -- cgit v1.2.3