diff --git a/src/text.c b/src/text.c
index c03f3d2b3580a8f4516f0e9a072100a0a3b6a4f7..7bfffcd7a1039bac7e06d6a11482142c61977a6f 100644
--- a/src/text.c
+++ b/src/text.c
@@ -980,7 +980,7 @@ void do_redo(void)
 }
 #endif /* !NANO_TINY */
 
-/* Someone hits Enter *gasp!* */
+/* Break the current line at the cursor position. */
 void do_enter()
 {
     filestruct *newnode = make_new_node(openfile->current);
@@ -991,45 +991,48 @@ void do_enter()
 #ifndef NANO_TINY
     add_undo(ENTER);
 
-    /* Do auto-indenting, like the neolithic Turbo Pascal editor. */
     if (ISSET(AUTOINDENT)) {
-	/* If we are breaking the line in the indentation, the new
-	 * indentation should have only current_x characters, and
-	 * current_x should not change. */
 	extra = indent_length(openfile->current->data);
+
+	/* If we are breaking the line in the indentation, limit the new
+	 * indentation to the current x position. */
 	if (extra > openfile->current_x)
 	    extra = openfile->current_x;
     }
 #endif
     newnode->data = charalloc(strlen(openfile->current->data +
-	openfile->current_x) + extra + 1);
+					openfile->current_x) + extra + 1);
     strcpy(&newnode->data[extra], openfile->current->data +
-	openfile->current_x);
+					openfile->current_x);
 #ifndef NANO_TINY
     if (ISSET(AUTOINDENT)) {
+	/* Copy the whitespace from the current line to the new one. */
 	strncpy(newnode->data, openfile->current->data, extra);
 	openfile->totsize += extra;
     }
 #endif
+
     null_at(&openfile->current->data, openfile->current_x);
+
 #ifndef NANO_TINY
+    /* Adjust the mark if it was on the current line after the cursor. */
     if (openfile->mark_set && openfile->current == openfile->mark_begin &&
 		openfile->current_x < openfile->mark_begin_x) {
 	openfile->mark_begin = newnode;
 	openfile->mark_begin_x += extra - openfile->current_x;
     }
 #endif
-    openfile->current_x = extra;
 
     splice_node(openfile->current, newnode);
-    openfile->current = newnode;
     renumber(newnode);
 
+    openfile->current = newnode;
+    openfile->current_x = extra;
+    openfile->placewewant = xplustabs();
+
     openfile->totsize++;
     set_modified();
 
-    openfile->placewewant = xplustabs();
-
 #ifndef NANO_TINY
     update_undo(ENTER);
 #endif