From d8e5799e847695b527016eebad93a1f16ac6a33e Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@telfort.nl>
Date: Sun, 13 Aug 2017 20:55:39 +0200
Subject: [PATCH] tweaks: adjust the indentation after the previous change

Also, trim or improve some comments.
---
 src/text.c | 59 ++++++++++++++++++++++--------------------------------
 1 file changed, 24 insertions(+), 35 deletions(-)

diff --git a/src/text.c b/src/text.c
index 04b29a82..558cda7d 100644
--- a/src/text.c
+++ b/src/text.c
@@ -339,27 +339,22 @@ void do_indent(void)
 
 	openfile->totsize += line_indent_len;
 
-	/* Keep track of the change in the current line. */
+	/* Compensate for the change in the current line. */
 	if (openfile->mark_set && f == openfile->mark_begin)
 	    openfile->mark_begin_x += line_indent_len;
-
 	if (f == openfile->current) {
 	    openfile->current_x += line_indent_len;
 	    openfile->placewewant = xplustabs();
 	}
     }
 
-    /* Clean up. */
     free(line_indent);
 
     /* Throw away the undo stack, to prevent making mistakes when
      * the user tries to undo something in the indented text. */
     discard_until(NULL, openfile);
 
-    /* Mark the file as modified. */
     set_modified();
-
-    /* Update the screen. */
     refresh_needed = TRUE;
 }
 
@@ -421,39 +416,33 @@ void do_unindent(void)
 	if (white_string(f->data) && indent_len < tabsize)
 	    continue;
 
-	    /* If there's at least tabsize
-	     * columns' worth of indentation at the beginning of the
-	     * non-whitespace text of this line, remove it. */
-	    charmove(f->data, &f->data[indent_len], line_len - indent_len + 1);
-	    null_at(&f->data, line_len - indent_len + 1);
-	    openfile->totsize -= indent_len;
-
-	    /* Keep track of the change in the current line. */
-	    if (openfile->mark_set && f == openfile->mark_begin) {
-		if (openfile->mark_begin_x <= indent_len)
-		    openfile->mark_begin_x = 0;
-		else
-		    openfile->mark_begin_x -= indent_len;
-	    }
+	/* Remove the first tab's worth of whitespace from this line. */
+	charmove(f->data, &f->data[indent_len], line_len - indent_len + 1);
+	null_at(&f->data, line_len - indent_len + 1);
+	openfile->totsize -= indent_len;
 
-	    if (f == openfile->current) {
-		if (openfile->current_x <= indent_len)
-		    openfile->current_x = 0;
-		else
-		    openfile->current_x -= indent_len;
-		openfile->placewewant = xplustabs();
-	    }
+	/* Compensate for the change in the current line. */
+	if (openfile->mark_set && f == openfile->mark_begin) {
+	    if (openfile->mark_begin_x <= indent_len)
+		openfile->mark_begin_x = 0;
+	    else
+		openfile->mark_begin_x -= indent_len;
+	}
+	if (f == openfile->current) {
+	    if (openfile->current_x <= indent_len)
+		openfile->current_x = 0;
+	    else
+		openfile->current_x -= indent_len;
+	    openfile->placewewant = xplustabs();
+	}
     }
 
-	/* Throw away the undo stack, to prevent making mistakes when
-	 * the user tries to undo something in the unindented text. */
-	discard_until(NULL, openfile);
-
-	/* Mark the file as modified. */
-	set_modified();
+    /* Throw away the undo stack, to prevent making mistakes when
+     * the user tries to undo something in the unindented text. */
+    discard_until(NULL, openfile);
 
-	/* Update the screen. */
-	refresh_needed = TRUE;
+    set_modified();
+    refresh_needed = TRUE;
 }
 #endif /* !NANO_TINY */
 
-- 
GitLab