diff --git a/src/move.c b/src/move.c index 6e5fd97c..e427eb23 100644 --- a/src/move.c +++ b/src/move.c @@ -484,8 +484,8 @@ void do_up(bool scroll_only) #ifndef NANO_TINY if (ISSET(SOFTWRAP)) { - leftedge = (xplustabs() / editwincols) * editwincols; target_column = openfile->placewewant % editwincols; + leftedge = (openfile->placewewant / editwincols) * editwincols; } #endif @@ -493,6 +493,9 @@ void do_up(bool scroll_only) if (go_back_chunks(1, &openfile->current, &leftedge) > 0) return; + if (ISSET(SOFTWRAP)) + openfile->placewewant = leftedge + target_column; + openfile->current_x = actual_x(openfile->current->data, leftedge + target_column); @@ -535,8 +538,8 @@ void do_down(bool scroll_only) #ifndef NANO_TINY if (ISSET(SOFTWRAP)) { - leftedge = (xplustabs() / editwincols) * editwincols; target_column = openfile->placewewant % editwincols; + leftedge = (openfile->placewewant / editwincols) * editwincols; } #endif @@ -544,6 +547,9 @@ void do_down(bool scroll_only) if (go_forward_chunks(1, &openfile->current, &leftedge) > 0) return; + if (ISSET(SOFTWRAP)) + openfile->placewewant = leftedge + target_column; + openfile->current_x = actual_x(openfile->current->data, leftedge + target_column);