@@ -320,29 +320,23 @@ 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+
329+ // TODO: simplistic ensure cursor in view for now
330+ view.ensure_cursor_in_view();
331+ } else {
332+ if let KeyEvent {
336333 code: KeyCode::Char(c),
337334 ..
338− } => commands::insert_char(view, c),
339− KeyEvent {
340− code: KeyCode::Enter,
341− ..
342− } => commands::insert_char(view, '\n'),
343− _ => (), // skip
335+ } = event
336+ {
337+ commands::insert_char(view, c);
338+ }
344339 }
345− // TODO: simplistic ensure cursor in view for now
346340 view.ensure_cursor_in_view();
347341
348342 self.render();