yazi_widgets/input/commands/
yank.rs

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