Commit Diff


commit - ea4d528fb9b148ba63bc5034d649c11110fd71a1
commit + 4569bab9c2fd59c93263a23caf71442d4b0934a4
blob - ed8e2a875b3635348ab94a42360993738eaf754e
blob + 76a2016df1b32cde9abe05c307589ecb3bd9e53e
--- st.c
+++ st.c
@@ -883,10 +883,14 @@ csihandle(void) {
 	case 'J': /* ED -- Clear screen */
 		switch(escseq.arg[0]) {
 		case 0: /* below */
-			tclearregion(term.c.x, term.c.y, term.col-1, term.row-1);
+			tclearregion(term.c.x, term.c.y, term.col-1, term.c.y);
+			if(term.c.y < term.row-1)
+				tclearregion(0, term.c.y+1, term.col-1, term.row-1);
 			break;
 		case 1: /* above */
-			tclearregion(0, 0, term.c.x, term.c.y);
+			if(term.c.y > 1)
+				tclearregion(0, 0, term.col-1, term.c.y-1);
+			tclearregion(0, term.c.y, term.c.x, term.c.y);
 			break;
 		case 2: /* all */
 			tclearregion(0, 0, term.col-1, term.row-1);