From 6f0ed2075c502e346ff219628cb102cd33581cf5 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Tue, 24 Jan 2017 21:51:23 -0600 Subject: [PATCH] softwrap: save and restore firstcolumn when copying text Copying text involves first cutting it and then quickly pasting it back. However, cutting the text may change firstcolumn if the mark is offscreen. To keep the viewport unchanged, copy_text() has to save and restore not just edittop, but firstcolumn as well. --- src/cut.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cut.c b/src/cut.c index 97ccc819..25717bfb 100644 --- a/src/cut.c +++ b/src/cut.c @@ -225,6 +225,7 @@ void do_copy_text(void) /* Remember the current viewport and cursor position. */ ssize_t is_edittop_lineno = openfile->edittop->lineno; + size_t is_firstcolumn = openfile->firstcolumn; ssize_t is_current_lineno = openfile->current->lineno; size_t is_current_x = openfile->current_x; @@ -239,6 +240,7 @@ void do_copy_text(void) if (mark_set) { /* Restore the viewport and cursor position. */ openfile->edittop = fsfromline(is_edittop_lineno); + openfile->firstcolumn = is_firstcolumn; openfile->current = fsfromline(is_current_lineno); openfile->current_x = is_current_x; }