From 793d8490decd3bb6e65f5ac1f83c34eeb185c054 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Thu, 26 Nov 2015 08:45:22 +0000 Subject: [PATCH] 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 --- ChangeLog | 4 ++++ src/text.c | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index 43776411..4d847df1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-11-26 Benno Schulenberg + * 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 * 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 index 3e6e75cf..20c98287 100644 --- 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) { -- 2.39.5