yazi_widgets/input/commands/
backspace.rs1use anyhow::Result;
2use yazi_macro::{act, render, succ};
3use yazi_parser::input::BackspaceOpt;
4use yazi_shared::data::Data;
5
6use crate::input::Input;
7
8impl Input {
9 pub fn backspace(&mut self, opt: BackspaceOpt) -> Result<Data> {
10 let snap = self.snap_mut();
11 if !opt.under && snap.cursor < 1 {
12 succ!();
13 } else if opt.under && snap.cursor >= snap.count() {
14 succ!();
15 }
16
17 if opt.under {
18 snap.value.remove(snap.idx(snap.cursor).unwrap());
19 act!(r#move, self)?;
20 } else {
21 snap.value.remove(snap.idx(snap.cursor - 1).unwrap());
22 act!(r#move, self, -1)?;
23 }
24
25 self.flush_value();
26 succ!(render!());
27 }
28}