From 4003287cc3d1d570322150d85e8d4da3a227df76 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Thu, 6 Nov 2025 09:37:04 +0100 Subject: [PATCH] vim: Downgrade user config error from panic to log (#42070) Fixes ZED-2W3 Release Notes: - Fixed panic due to invalid vim keycap --- crates/vim/src/digraph.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/crates/vim/src/digraph.rs b/crates/vim/src/digraph.rs index 7a2ae08cace066bd6fa73d9914aac847b0fb1136..39014fea5b397dbaf377cab856f79dfb6134393e 100644 --- a/crates/vim/src/digraph.rs +++ b/crates/vim/src/digraph.rs @@ -63,18 +63,22 @@ impl Vim { } fn literal(&mut self, action: &Literal, window: &mut Window, cx: &mut Context) { - if let Some(Operator::Literal { prefix }) = self.active_operator() - && let Some(prefix) = prefix - { - if let Some(keystroke) = Keystroke::parse(&action.0).ok() { - window.defer(cx, |window, cx| { - window.dispatch_keystroke(keystroke, cx); - }); + match self.active_operator() { + Some(Operator::Literal { + prefix: Some(prefix), + }) => { + if let Some(keystroke) = Keystroke::parse(&action.0).ok() { + window.defer(cx, |window, cx| { + window.dispatch_keystroke(keystroke, cx); + }); + } + return self.handle_literal_input(prefix, "", window, cx); } - return self.handle_literal_input(prefix, "", window, cx); + Some(_) => self.insert_literal(Some(action.1), "", window, cx), + None => log::error!( + "Literal called when no operator was on the stack. This likely means there is an invalid keymap config" + ), } - - self.insert_literal(Some(action.1), "", window, cx); } pub fn handle_literal_keystroke(