@@ -320,29 +320,23 @@ 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);
328− code: KeyCode::Backspace,
329+ // TODO: simplistic ensure cursor in view for now
329− ..
330+ view.ensure_cursor_in_view();
330− } => commands::delete_char_backward(view, 1),
331+ } else {
332− code: KeyCode::Delete,
334− } => commands::delete_char_forward(view, 1),
335− KeyEvent {
332+ if let KeyEvent {
336 code: KeyCode::Char(c),
333 code: KeyCode::Char(c),
338− } => commands::insert_char(view, c),
335+ } = event
340− code: KeyCode::Enter,
342− } => commands::insert_char(view, '\n'),
337+ commands::insert_char(view, c);
343− _ => (), // skip
338+ }
345− // TODO: simplistic ensure cursor in view for now
346 view.ensure_cursor_in_view();
340 view.ensure_cursor_in_view();
348 self.render();
342 self.render();