diff options
author | Jan Hrastnik | 2020-09-30 23:15:42 +0000 |
---|---|---|
committer | Jan Hrastnik | 2020-09-30 23:15:42 +0000 |
commit | dd94a3981067a11c3d42caef32e3d9c93e1ec357 (patch) | |
tree | 72fa23293455342cae889c25575d4373e0ff81f7 /helix-term/src | |
parent | 592c5b0af22cc719fc1513f71706dad326ba8081 (diff) |
moved insert keymap to keymap.rs
Diffstat (limited to 'helix-term/src')
-rw-r--r-- | helix-term/src/editor.rs | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/helix-term/src/editor.rs b/helix-term/src/editor.rs index a3d6a04e..767ed7a1 100644 --- a/helix-term/src/editor.rs +++ b/helix-term/src/editor.rs @@ -320,29 +320,23 @@ impl Editor { if let Some(view) = &mut self.view { match view.state.mode() { Mode::Insert => { - match event { - KeyEvent { - code: KeyCode::Esc, .. - } => commands::normal_mode(view, 1), - KeyEvent { - code: KeyCode::Backspace, - .. - } => commands::delete_char_backward(view, 1), - KeyEvent { - code: KeyCode::Delete, - .. - } => commands::delete_char_forward(view, 1), - KeyEvent { + // TODO: handle modes and sequences (`gg`) + let keys = vec![event]; + if let Some(command) = keymap[&Mode::Insert].get(&keys) { + // TODO: handle count other than 1 + command(view, 1); + + // TODO: simplistic ensure cursor in view for now + view.ensure_cursor_in_view(); + } else { + if let KeyEvent { code: KeyCode::Char(c), .. - } => commands::insert_char(view, c), - KeyEvent { - code: KeyCode::Enter, - .. - } => commands::insert_char(view, '\n'), - _ => (), // skip + } = event + { + commands::insert_char(view, c); + } } - // TODO: simplistic ensure cursor in view for now view.ensure_cursor_in_view(); self.render(); |