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:
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) {