diff --git a/yazi-core/src/input/input.rs b/yazi-core/src/input/input.rs index 46dac2fa..47739a12 100644 --- a/yazi-core/src/input/input.rs +++ b/yazi-core/src/input/input.rs @@ -56,11 +56,17 @@ impl Input { } match key { - Key { code: KeyCode::Backspace, shift: false, ctrl: false, alt: false } => self.backspace(false), + Key { code: KeyCode::Backspace, shift: false, ctrl: false, alt: false } => self.backspace(), // Handle Emacs-style keybindings. - Key { code: KeyCode::Char('a'), shift: false, ctrl: true, alt: false } => self.move_(isize::MIN), - Key { code: KeyCode::Char('e'), shift: false, ctrl: true, alt: false } => self.move_(isize::MAX), - Key { code: KeyCode::Char('d'), shift: false, ctrl: true, alt: false } => self.backspace(true), + Key { code: KeyCode::Char('a'), shift: false, ctrl: true, alt: false } => { + self.move_(isize::MIN) + } + Key { code: KeyCode::Char('e'), shift: false, ctrl: true, alt: false } => { + self.move_(isize::MAX) + } + Key { code: KeyCode::Char('d'), shift: false, ctrl: true, alt: false } => { + self.forward_delete() + } Key { code: KeyCode::Char('b'), shift: false, ctrl: false, alt: true } => self.backward(), Key { code: KeyCode::Char('f'), shift: false, ctrl: false, alt: true } => self.forward(false), _ => false, @@ -80,26 +86,29 @@ impl Input { true } - pub fn backspace(&mut self, forward_delete: bool) -> bool { + pub fn forward_delete(&mut self) -> bool { let snap = self.snaps.current_mut(); - if forward_delete { - // Return false when there is no character on the right to delete. - // Note that the cursor can be at index `snap.value.len()` when in - // edit mode. - if snap.cursor > snap.value.len() - 1 { - return false; - } else { - snap.value.remove(snap.idx(snap.cursor).unwrap()); - } - self.move_(0); + // Return false when there is no character on the right to delete. + // Note that the cursor can be at index `snap.value.len()` when in + // edit mode. + if snap.cursor > snap.value.len() - 1 { + return false; } else { - if snap.cursor < 1 { - return false; - } else { - snap.value.remove(snap.idx(snap.cursor - 1).unwrap()); - } - self.move_(-1); + snap.value.remove(snap.idx(snap.cursor).unwrap()); } + self.move_(0); + self.flush_value(); + true + } + + pub fn backspace(&mut self) -> bool { + let snap = self.snaps.current_mut(); + if snap.cursor < 1 { + return false; + } else { + snap.value.remove(snap.idx(snap.cursor - 1).unwrap()); + } + self.move_(-1); self.flush_value(); true