@@ -254,6 +254,7 @@ impl Editor {
254 let mode = match view.state.mode() {
254 let mode = match view.state.mode() {
255 Mode::Insert => "INS",
255 Mode::Insert => "INS",
256 Mode::Normal => "NOR",
256 Mode::Normal => "NOR",
257+ Mode::Goto => "GOTO",
258 self.surface.set_style(
259 self.surface.set_style(
259 Rect::new(0, self.size.1 - 1, self.size.0, 1),
260 Rect::new(0, self.size.1 - 1, self.size.0, 1),
@@ -278,6 +279,7 @@ impl Editor {
278 match view.state.mode() {
279 match view.state.mode() {
279 Mode::Insert => write!(stdout, "\x1B[6 q"),
280 Mode::Insert => write!(stdout, "\x1B[6 q"),
280 Mode::Normal => write!(stdout, "\x1B[2 q"),
281 Mode::Normal => write!(stdout, "\x1B[2 q"),
282+ Mode::Goto => write!(stdout, "\x1B[2 q"),
283 // render the cursor
285 // render the cursor
@@ -326,6 +328,7 @@ impl Editor {
326 }))) => {
328 }))) => {
329 Some(Ok(Event::Key(event))) => {
332 Some(Ok(Event::Key(event))) => {
330 if let Some(view) = &mut self.view {
333 if let Some(view) = &mut self.view {
331 match view.state.mode() {
334 match view.state.mode() {
@@ -356,6 +359,19 @@ impl Editor {
356 // TODO: simplistic ensure cursor in view for now
359 // TODO: simplistic ensure cursor in view for now
357 view.ensure_cursor_in_view();
360 view.ensure_cursor_in_view();
366+ // TODO: handle modes and sequences (`gg`)
367+ let keys = vec![event];
368+ if let Some(command) = keymap[&Mode::Goto].get(&keys) {
369+ // TODO: handle count other than 1
372+ // TODO: simplistic ensure cursor in view for now
373+ view.ensure_cursor_in_view();
359 self.render();
375 self.render();