From 6df6386c3af1420d9b0d676d5b9da660ab6f99d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Fri, 12 Sep 2014 11:29:28 +0200 Subject: Restore cursor position after an undo/redo --- vis.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'vis.c') diff --git a/vis.c b/vis.c index 88cefd2..b2559d7 100644 --- a/vis.c +++ b/vis.c @@ -593,13 +593,21 @@ static void mark_line(const Arg *arg) { } static void undo(const Arg *arg) { - if (text_undo(vis->win->text)) + size_t pos = text_undo(vis->win->text); + if (pos != (size_t)-1) { + window_cursor_to(vis->win->win, pos); + /* redraw all windows in case some display the same file */ editor_draw(vis); + } } static void redo(const Arg *arg) { - if (text_redo(vis->win->text)) + size_t pos = text_redo(vis->win->text); + if (pos != (size_t)-1) { + window_cursor_to(vis->win->win, pos); + /* redraw all windows in case some display the same file */ editor_draw(vis); + } } static void zero(const Arg *arg) { -- cgit v1.2.3