Index: uspace/app/edit/edit.c
===================================================================
--- uspace/app/edit/edit.c	(revision c29f20ba90f19e7fd960e63503c18c7fb0f714b0)
+++ uspace/app/edit/edit.c	(revision 884b461aa760c6aa0cd7ec1724552d8b45cb1101)
@@ -208,5 +208,4 @@
 	case KC_ENTER:
 		insert_char('\n');
-		pane.rflags |= REDRAW_TEXT;
 		caret_update();
 		break;
@@ -237,10 +236,8 @@
 	case KC_BACKSPACE:
 		delete_char_before();
-		pane.rflags |= REDRAW_TEXT;
 		caret_update();
 		break;
 	case KC_DELETE:
 		delete_char_after();
-		pane.rflags |= REDRAW_TEXT;
 		caret_update();
 		break;
@@ -248,5 +245,4 @@
 		if (ev->c >= 32 || ev->c == '\t') {
 			insert_char(ev->c);
-			pane.rflags |= REDRAW_ROW;
 			caret_update();
 		}
@@ -513,4 +509,8 @@
 
 	(void) sheet_insert(&doc.sh, &pt, dir_before, cbuf);
+
+	pane.rflags |= REDRAW_ROW;
+	if (c == '\n')
+		pane.rflags |= REDRAW_TEXT;
 }
 
@@ -528,4 +528,8 @@
 
 	(void) sheet_delete(&doc.sh, &sp, &ep);
+
+	pane.rflags |= REDRAW_ROW;
+	if (coord.column < 1)
+		pane.rflags |= REDRAW_TEXT;
 }
 
@@ -534,12 +538,17 @@
 {
 	spt_t sp, ep;
-	coord_t coord;
+	coord_t sc, ec;
 
 	tag_get_pt(&pane.caret_pos, &sp);
-	spt_get_coord(&sp, &coord);
-
-	sheet_get_cell_pt(&doc.sh, &coord, dir_after, &ep);
+	spt_get_coord(&sp, &sc);
+
+	sheet_get_cell_pt(&doc.sh, &sc, dir_after, &ep);
+	spt_get_coord(&ep, &ec);
 
 	(void) sheet_delete(&doc.sh, &sp, &ep);
+
+	pane.rflags |= REDRAW_ROW;
+	if (ec.row != sc.row)
+		pane.rflags |= REDRAW_TEXT;
 }
 
