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