From 269f59c8f20071323bd92dc6415fe8b9c3b3e659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Macio=C5=82ek?= Date: Thu, 14 Mar 2024 20:33:27 +0100 Subject: [PATCH] backspace delete char added --- src/editor.rs | 20 +++++++++++++++++++- test.txt | 0 2 files changed, 19 insertions(+), 1 deletion(-) delete mode 100644 test.txt diff --git a/src/editor.rs b/src/editor.rs index f303cc0..1108020 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -76,7 +76,6 @@ impl Editor { self.filename = Some(filename.clone()); self.screen.set_filename(Some(filename.clone())); } else { - File::create(filename).unwrap(); self.filename = Some(filename.clone()); self.screen.set_filename(Some(filename.clone())); } @@ -151,6 +150,8 @@ impl Editor { || c.code == KeyCode::End { self.move_cursor(c); + } else if c.code == KeyCode::Backspace { + self.delete_char(); } else if let KeyCode::Char(c) = c.code { self.insert_char(c); } @@ -244,6 +245,23 @@ impl Editor { self.dirty = true; } + fn delete_char(&mut self) { + if self.cursor.y >= self.rows.len() { + return; + } + if self.cursor.x > 0 { + self.rows[self.cursor.y].remove(self.cursor.x - 1); + self.cursor.x -= 1; + self.dirty = true; + } else if self.cursor.y > 0 { + let row = self.rows.remove(self.cursor.y); + self.cursor.y -= 1; + self.cursor.x = self.rows[self.cursor.y].len(); + self.rows[self.cursor.y].push_str(&row); + self.dirty = true; + } + } + fn save(&mut self) { if let Some(filename) = &self.filename { let mut file = File::create(filename).unwrap(); diff --git a/test.txt b/test.txt deleted file mode 100644 index e69de29..0000000