diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 42794d963..32eb3f003 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -3632,11 +3632,7 @@ fn wclose(cx: &mut Context) { fn select_register(cx: &mut Context) { cx.on_next_key(move |cx, event| { - if let KeyEvent { - code: KeyCode::Char(ch), - .. - } = event - { + if let Some(ch) = event.char() { cx.editor.selected_register.select(ch); } }) @@ -3687,11 +3683,7 @@ fn select_textobject_inner(cx: &mut Context) { fn select_textobject(cx: &mut Context, objtype: textobject::TextObject) { let count = cx.count(); cx.on_next_key(move |cx, event| { - if let KeyEvent { - code: KeyCode::Char(ch), - .. - } = event - { + if let Some(ch) = event.char() { let (view, doc) = current!(cx.editor); let text = doc.text().slice(..); @@ -3713,11 +3705,7 @@ fn select_textobject(cx: &mut Context, objtype: textobject::TextObject) { fn surround_add(cx: &mut Context) { cx.on_next_key(move |cx, event| { - if let KeyEvent { - code: KeyCode::Char(ch), - .. - } = event - { + if let Some(ch) = event.char() { let (view, doc) = current!(cx.editor); let text = doc.text().slice(..); let selection = doc.selection(view.id); @@ -3743,17 +3731,9 @@ fn surround_add(cx: &mut Context) { fn surround_replace(cx: &mut Context) { let count = cx.count(); cx.on_next_key(move |cx, event| { - if let KeyEvent { - code: KeyCode::Char(from), - .. - } = event - { + if let Some(from) = event.char() { cx.on_next_key(move |cx, event| { - if let KeyEvent { - code: KeyCode::Char(to), - .. - } = event - { + if let Some(to) = event.char() { let (view, doc) = current!(cx.editor); let text = doc.text().slice(..); let selection = doc.selection(view.id); @@ -3783,11 +3763,7 @@ fn surround_replace(cx: &mut Context) { fn surround_delete(cx: &mut Context) { let count = cx.count(); cx.on_next_key(move |cx, event| { - if let KeyEvent { - code: KeyCode::Char(ch), - .. - } = event - { + if let Some(ch) = event.char() { let (view, doc) = current!(cx.editor); let text = doc.text().slice(..); let selection = doc.selection(view.id); diff --git a/helix-view/src/input.rs b/helix-view/src/input.rs index 8d9ee6fb9..28b204bb8 100644 --- a/helix-view/src/input.rs +++ b/helix-view/src/input.rs @@ -15,10 +15,10 @@ pub struct KeyEvent { } impl KeyEvent { - /// Get only the character involved in this event + /// If a character was pressed (without modifiers), return it. pub fn char(&self) -> Option { match self.code { - KeyCode::Char(ch) => Some(ch), + KeyCode::Char(ch) if self.modifiers.is_empty() => Some(ch), _ => None, } }