yazi_widgets/input/commands/
backspace.rs

1use 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}