Skip to main content

yazi_widgets/input/actor/
yank.rs

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