Skip to main content

yazi_widgets/input/actor/
delete.rs

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