From 948b8e9bcfda6d4a789f4635ccc4c43ddb782e37 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Sat, 14 Jun 2014 14:08:28 +0000
Subject: [PATCH] Putting the cursor back in front of a backwards cut, where it
 was when the cut was made. Patch by Mark Majeres, edited by Benno
 Schulenberg.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4966 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog  | 4 ++++
 src/nano.h | 2 +-
 src/text.c | 3 ++-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3c9a6807..f8b55a18 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-06-14  Mark Majeres  <mark@engine12.com>
+	* src/nano.h, src/text.c (undo_cut, update_undo): When undoing a
+	backwards cut, put the cursor back in front of it, where it was.
+
 2014-06-13  Benno Schulenberg  <bensberg@justemail.net>
 	* src/nano.c (do_input): Repositioning the cursor with the mouse
 	(result == 0) should break a series of ^Ks.
diff --git a/src/nano.h b/src/nano.h
index 4e9a3194..cb2d196a 100644
--- a/src/nano.h
+++ b/src/nano.h
@@ -574,7 +574,7 @@ enum
 /* Extra bits for the undo function. */
 #define UNdel_del		(1<<0)
 #define UNdel_backspace	(1<<1)
-#define UNsplit_completed	(1<<2)
+#define UNcut_marked_backwards	(1<<2)
 #define UNcut_cutline		(1<<3)
 #endif /* !NANO_TINY */
 
diff --git a/src/text.c b/src/text.c
index 6e025765..271ad2d2 100644
--- a/src/text.c
+++ b/src/text.c
@@ -396,7 +396,7 @@ void undo_cut(undo *u)
     free_filestruct(cutbuffer);
     cutbuffer = NULL;
 
-    if (u->xflags == UNcut_cutline)
+    if (u->xflags == UNcut_cutline || u->xflags == UNcut_marked_backwards)
 	goto_line_posx(u->mark_begin_lineno, u->mark_begin_x);
 }
 
@@ -1072,6 +1072,7 @@ void update_undo(undo_type action)
 		ssize_t line = u->lineno;
 		u->lineno = u->mark_begin_lineno;
 		u->mark_begin_lineno = line;
+		u->xflags = UNcut_marked_backwards;
 	    }
 	} else if (!ISSET(CUT_TO_END)) {
 	    /* Compute cutbottom for the uncut using our copy. */
-- 
GitLab