From 6e21a748b87a4eb9381ea0d24117711c5b547ab1 Mon Sep 17 00:00:00 2001 From: Gokul Soumya Date: Sun, 5 Sep 2021 17:50:11 +0530 Subject: [PATCH] Fix escape not exiting insert mode (#712) Regression due to #635 where escape key in insert mode would not exit normal mode. This happened due to hard coding the escape key to cancel a sticky keymap node. --- helix-term/src/keymap.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/helix-term/src/keymap.rs b/helix-term/src/keymap.rs index f0f980bd1..aa60482df 100644 --- a/helix-term/src/keymap.rs +++ b/helix-term/src/keymap.rs @@ -287,13 +287,14 @@ impl Keymap { /// sticky node is in use, it will be cleared. pub fn get(&mut self, key: KeyEvent) -> KeymapResult { if let key!(Esc) = key { - if self.state.is_empty() { - self.sticky = None; + if !self.state.is_empty() { + return KeymapResult::new( + // Note that Esc is not included here + KeymapResultKind::Cancelled(self.state.drain(..).collect()), + self.sticky(), + ); } - return KeymapResult::new( - KeymapResultKind::Cancelled(self.state.drain(..).collect()), - self.sticky(), - ); + self.sticky = None; } let first = self.state.get(0).unwrap_or(&key);