nano

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

commit c30d3d8010ff6015fadfcfa9c10ceb40521b8b44
parent 0c40f87b5573bc143fde3974f2ad419fb08bbdf3
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Sat,  2 Dec 2017 10:06:12 +0100

wrapping: delete trailing blanks upon hardwrapping, when requested

This fulfills https://savannah.gnu.org/bugs/?52198.

Diffstat:
Msrc/text.c | 17+++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/text.c b/src/text.c @@ -1613,7 +1613,7 @@ bool do_wrap(filestruct *line) openfile->current_x = line_len; /* If the remainder doesn't end in a blank, add a space. */ - if (!is_blank_mbchar(tail) && !ISSET(JUSTIFY_TRIM)) { + if (!is_blank_mbchar(tail)) { #ifndef NANO_TINY add_undo(ADD); #endif @@ -1638,8 +1638,21 @@ bool do_wrap(filestruct *line) } } - /* Go to the wrap location and split the line there. */ + /* Go to the wrap location. */ openfile->current_x = wrap_loc; + + /* When requested, snip trailing blanks off the wrapped line. */ + if (ISSET(JUSTIFY_TRIM)) { + size_t cur_x = move_mbleft(line->data, wrap_loc); + + while (is_blank_mbchar(line->data + cur_x)) { + openfile->current_x = cur_x; + do_delete(); + cur_x = move_mbleft(line->data, cur_x); + } + } + + /* Now split the line. */ do_enter(); if (old_x < wrap_loc) {