yazi_widgets/input/commands/
escape.rs

1use anyhow::Result;
2use yazi_macro::{act, succ};
3use yazi_parser::VoidOpt;
4use yazi_shared::data::Data;
5
6use crate::input::{Input, InputMode, op::InputOp};
7
8impl Input {
9	pub fn escape(&mut self, _: VoidOpt) -> Result<Data> {
10		let snap = self.snap_mut();
11		match snap.mode {
12			InputMode::Normal => {
13				snap.op = InputOp::None;
14			}
15			InputMode::Insert => {
16				snap.mode = InputMode::Normal;
17				act!(r#move, self, -1)?;
18			}
19			InputMode::Replace => {
20				snap.mode = InputMode::Normal;
21			}
22		}
23		self.snaps.tag(self.limit);
24		succ!();
25	}
26}