put the key canonicalization in a seperate function. only chars now get stripped of Shift modifier

This commit is contained in:
Jan Hrastnik 2021-06-03 12:14:02 +02:00 committed by Blaž Hrastnik
parent 712f25c2b9
commit 68abc67ec6

View file

@ -547,11 +547,6 @@ impl Component for EditorView {
// clear status // clear status
cx.editor.status_msg = None; cx.editor.status_msg = None;
//canonicalize the key
if key.modifiers == KeyModifiers::SHIFT {
key.modifiers = KeyModifiers::NONE;
}
let (view, doc) = cx.editor.current(); let (view, doc) = cx.editor.current();
let mode = doc.mode(); let mode = doc.mode();
@ -570,7 +565,7 @@ impl Component for EditorView {
match mode { match mode {
Mode::Insert => { Mode::Insert => {
// record last_insert key // record last_insert key
self.last_insert.1.push(key); self.last_insert.1.push(canonicalize_key(&mut key));
// let completion swallow the event if necessary // let completion swallow the event if necessary
let mut consumed = false; let mut consumed = false;
@ -595,7 +590,7 @@ impl Component for EditorView {
// if completion didn't take the event, we pass it onto commands // if completion didn't take the event, we pass it onto commands
if !consumed { if !consumed {
self.insert_mode(&mut cxt, key); self.insert_mode(&mut cxt, canonicalize_key(&mut key));
// lastly we recalculate completion // lastly we recalculate completion
if let Some(completion) = &mut self.completion { if let Some(completion) = &mut self.completion {
@ -606,7 +601,7 @@ impl Component for EditorView {
} }
} }
} }
mode => self.command_mode(mode, &mut cxt, key), mode => self.command_mode(mode, &mut cxt, canonicalize_key(&mut key)),
} }
} }
@ -695,3 +690,10 @@ impl Component for EditorView {
None None
} }
} }
fn canonicalize_key(key: &mut KeyEvent) -> KeyEvent {
if let KeyEvent { code: KeyCode::Char(_), modifiers: KeyModifiers::SHIFT } = key {
key.modifiers = KeyModifiers::NONE;
}
*key
}