Skip to main content

yazi_widgets/input/actor/
backspace.rs

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