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