nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit f3e2ad945dabf9518c5f884d6207948ce80732ac
parent 6ec65d5500330736317664ecd58414db78f724c9
Author: Benno Schulenberg <bensberg@justemail.net>
Date:   Thu,  6 Apr 2017 19:37:36 +0200

display: with softwrap, show the cursor where the eye expects it

When a multi-column character straddles a chunk boundary, and the
preferred column (placewewant) for the cursor is zero, cheat: show
the cursor not where the character starts but on the beginning of
the next row.  This makes the cursor move smoothly in the leftmost
column of the screen when using <Up> and <Down> and such, instead
of jumping around.

In this way the scrolling logic won't get confused and the screen
will scroll properly when stepping beyond the top or bottom row.

This fixes https://savannah.gnu.org/bugs/?50687.

Diffstat:
Msrc/winio.c | 6++++++
1 file changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/winio.c b/src/winio.c @@ -2287,6 +2287,12 @@ void reset_cursor(void) /* Add the number of wraps in the current line before the cursor. */ row += xpt / editwincols; col = xpt % editwincols; + + /* If the cursor ought to be in column zero, nudge it there. */ + if (openfile->placewewant % editwincols == 0 && col != 0) { + row++; + col = 0; + } } else #endif {