yazi_widgets/input/commands/
delete.rs

1use anyhow::Result;
2use yazi_macro::{act, render, succ};
3use yazi_parser::input::DeleteOpt;
4use yazi_shared::data::Data;
5
6use crate::input::{Input, op::InputOp};
7
8impl Input {
9	pub fn delete(&mut self, opt: DeleteOpt) -> Result<Data> {
10		match self.snap().op {
11			InputOp::None => {
12				self.snap_mut().op = InputOp::Delete(opt.cut, opt.insert, self.snap().cursor);
13			}
14			InputOp::Select(start) => {
15				self.snap_mut().op = InputOp::Delete(opt.cut, opt.insert, start);
16				render!(self.handle_op(self.snap().cursor, true));
17				act!(r#move, self)?;
18			}
19			InputOp::Delete(..) => {
20				self.snap_mut().op = InputOp::Delete(opt.cut, opt.insert, 0);
21				act!(r#move, self, self.snap().len() as isize)?;
22			}
23			_ => {}
24		}
25		succ!();
26	}
27}