From 63b54b6425e2b6fa4caeeb604ab71bc5730152b7 Mon Sep 17 00:00:00 2001 From: Maksym Date: Fri, 7 Feb 2025 23:28:51 +0100 Subject: [PATCH] handle delete --- src/app.rs | 6 +++++- src/pike.rs | 12 +++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/app.rs b/src/app.rs index d987528..95bf400 100644 --- a/src/app.rs +++ b/src/app.rs @@ -504,7 +504,11 @@ impl App { Ok(true) } KeyCode::Backspace => { - self.backend.delete_character_from_current_buffer(); + self.backend.delete_character_before_cursor(); + Ok(true) + } + KeyCode::Delete => { + self.backend.delete_char_under_cursor(); Ok(true) } _ => Ok(false), diff --git a/src/pike.rs b/src/pike.rs index fcbe8a8..d27be5f 100644 --- a/src/pike.rs +++ b/src/pike.rs @@ -159,7 +159,7 @@ impl Pike { } /// Deletes a characted and moves the cursor left - pub fn delete_character_from_current_buffer(&mut self) { + pub fn delete_character_before_cursor(&mut self) { if let Some(buffer) = &mut self.workspace.current_buffer { let pos = buffer.cursor.position; @@ -191,6 +191,16 @@ impl Pike { } } + pub fn delete_char_under_cursor(&mut self) { + if let Some(buffer) = &mut self.workspace.current_buffer { + let pos = buffer.cursor.position; + + self.cursor_history.record_undo_position(pos); + + buffer.delete(); + } + } + /// Returns the contents of the currently opened buffer or /// an empty string if none is open pub fn current_buffer_contents(&self) -> String {