Skip to main content

yazi_widgets/input/actor/
escape.rs

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