@@ -320,29 +320,20 @@ impl Editor {
320 if let Some(view) = &mut self.view {
320 if let Some(view) = &mut self.view {
321 match view.state.mode() {
321 match view.state.mode() {
322 Mode::Insert => {
322 Mode::Insert => {
323+ // TODO: handle modes and sequences (`gg`)
323− match event {
324+ let keys = vec![event];
324− KeyEvent {
325+ if let Some(command) = keymap[&Mode::Insert].get(&keys) {
325− code: KeyCode::Esc, ..
326+ // TODO: handle count other than 1
326− } => commands::normal_mode(view, 1),
327+ command(view, 1);
327− KeyEvent {
328+ } else {
328− code: KeyCode::Backspace,
330− } => commands::delete_char_backward(view, 1),
332− code: KeyCode::Delete,
334− } => commands::delete_char_forward(view, 1),
335− KeyEvent {
329+ if let KeyEvent {
336 code: KeyCode::Char(c),
330 code: KeyCode::Char(c),
338− } => commands::insert_char(view, c),
332+ } = event
340− code: KeyCode::Enter,
342− } => commands::insert_char(view, '\n'),
334+ commands::insert_char(view, c);
343− _ => (), // skip
335+ }
345− // TODO: simplistic ensure cursor in view for now
346 view.ensure_cursor_in_view();
337 view.ensure_cursor_in_view();
348 self.render();
339 self.render();