commit 793d8490decd3bb6e65f5ac1f83c34eeb185c054
parent cf0c9403e1fc52b0e63447b704271c076e9443be
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Thu, 26 Nov 2015 08:45:22 +0000
Also the /redoing/ of a Backspace at EOF is a special case.
This fixes Savannah bug #46532.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5444 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,7 @@
+2015-11-26 Benno Schulenberg <bensberg@justemail.net>
+ * src/text.c (do_redo): Not just the undoing, also the redoing of a
+ Backspace at EOF is a special case. This fixes Savannah bug #46532.
+
2015-11-25 Benno Schulenberg <bensberg@justemail.net>
* src/nano.c (do_output): Refreshing the whole edit window (instead
of just the current line) is not needed for any kind of syntax, but
diff --git a/src/text.c b/src/text.c
@@ -700,6 +700,13 @@ void do_redo(void)
#endif
case JOIN:
redidmsg = _("line join");
+ /* When the join was done by a Backspace at the tail of the file,
+ * and the nonewlines flag isn't set, do not join anything, as
+ * nothing was actually deleted; just position the cursor. */
+ if (u->xflags == WAS_FINAL_BACKSPACE && !ISSET(NO_NEWLINES)) {
+ goto_line_posx(u->mark_begin_lineno, u->mark_begin_x);
+ break;
+ }
f->data = charealloc(f->data, strlen(f->data) + strlen(u->strdata) + 1);
strcat(f->data, u->strdata);
if (f->next != NULL) {