[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Nano-devel] [PATCH v2] cutting: when deleting whole words, don't join l
From: |
Benno Schulenberg |
Subject: |
[Nano-devel] [PATCH v2] cutting: when deleting whole words, don't join lines unexpectedly |
Date: |
Thu, 6 Sep 2018 20:19:30 +0200 |
---
src/text.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/src/text.c b/src/text.c
index b3e9d4dd..df3f204d 100644
--- a/src/text.c
+++ b/src/text.c
@@ -205,11 +205,26 @@ void do_cutword(bool backward)
cutbuffer = NULL;
cutbottom = NULL;
- /* Move the cursor to a word start, to the left or to the right. */
- if (backward)
+ /* Move the cursor to a word start, to the left or to the right.
+ * If that word is on another line and the cursor was not already
+ * on the edge of the original line, then put the cursor on that
+ * edge instead, so that lines will not be joined unexpectedly. */
+ if (backward) {
do_prev_word(ISSET(WORD_BOUNDS), FALSE);
- else
+ if (openfile->current != is_current && is_current_x > 0) {
+ openfile->current = is_current;
+ openfile->current_x = 0;
+ }
+ } else {
do_next_word(FALSE, ISSET(WORD_BOUNDS), FALSE);
+ if (openfile->current != is_current) {
+ if (is_current->data[is_current_x] != '\0') {
+ openfile->current = is_current;
+ openfile->current_x = strlen(is_current->data);
+ } else
+ do_next_word(FALSE, ISSET(WORD_BOUNDS), FALSE);
+ }
+ }
/* Set the mark at the start of that word. */
openfile->mark = openfile->current;
--
2.17.1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Nano-devel] [PATCH v2] cutting: when deleting whole words, don't join lines unexpectedly,
Benno Schulenberg <=