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