yazi_widgets/input/commands/
paste.rs

1use anyhow::Result;
2use yazi_macro::{act, render, succ};
3use yazi_parser::input::PasteOpt;
4use yazi_shared::data::Data;
5
6use crate::{CLIPBOARD, input::{Input, op::InputOp}};
7
8impl Input {
9	pub fn paste(&mut self, opt: PasteOpt) -> Result<Data> {
10		if let Some(start) = self.snap().op.start() {
11			self.snap_mut().op = InputOp::Delete(false, false, start);
12			self.handle_op(self.snap().cursor, true);
13		}
14
15		let s = futures::executor::block_on(CLIPBOARD.get());
16		if s.is_empty() {
17			succ!();
18		}
19
20		act!(insert, self, !opt.before)?;
21		self.type_str(&String::from_utf8_lossy(&s))?;
22		act!(escape, self)?;
23		succ!(render!());
24	}
25}