From 68bd6c2dfb0ed593c5e6deebe1d9753db90f03e1 Mon Sep 17 00:00:00 2001 From: Akshay Date: Thu, 18 Mar 2021 21:04:00 +0530 Subject: render cursor to command box, add readline keybinds --- src/command.rs | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) (limited to 'src/command.rs') diff --git a/src/command.rs b/src/command.rs index 064d767..d80f1f2 100644 --- a/src/command.rs +++ b/src/command.rs @@ -22,11 +22,11 @@ impl CommandBox { } } - fn cursor_end(&mut self) { + pub fn cursor_end(&mut self) { self.cursor = self.text.len(); } - fn cursor_start(&mut self) { + pub fn cursor_start(&mut self) { self.cursor = 0; } @@ -47,8 +47,17 @@ impl CommandBox { } } + pub fn delete_to_end(&mut self) { + self.text.truncate(self.cursor); + } + + pub fn delete_to_start(&mut self) { + self.text = self.text.chars().skip(self.cursor).collect(); + self.cursor = 0; + } + pub fn push_str(&mut self, v: &str) { - self.text.push_str(v); + self.text.insert_str(self.cursor, v); self.cursor += v.len(); } @@ -142,6 +151,36 @@ mod command_tests { assert_eq!(cmd.cursor, 16) } + #[test] + fn entering_text_between() { + let mut cmd = setup_with("save as file.png"); + cmd.backward(); + cmd.backward(); + cmd.backward(); + cmd.push_str("ext"); + assert_eq!(&cmd.text, "save as file.extpng"); + } + + #[test] + fn delete_to_end() { + let mut cmd = setup_with("save as file.png"); + cmd.backward(); + cmd.backward(); + cmd.backward(); + cmd.delete_to_end(); + assert_eq!(&cmd.text, "save as file."); + } + + #[test] + fn delete_to_start() { + let mut cmd = setup_with("save as file.png"); + cmd.backward(); + cmd.backward(); + cmd.backward(); + cmd.delete_to_start(); + assert_eq!(&cmd.text, "png"); + } + #[test] fn backspacing_from_end() { let mut cmd = setup_with("save"); -- cgit v1.2.3