CSI 3 J now clears the scrollback, as in xterm.
authorjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Tue, 5 Sep 2006 22:08:00 +0000 (22:08 +0000)
committerjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Tue, 5 Sep 2006 22:08:00 +0000 (22:08 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@6847 cda61777-01e9-0310-a592-d414129be87e

terminal.c

index b88fe06..f5603a8 100644 (file)
@@ -3346,10 +3346,17 @@ static void term_out(Terminal *term)
                        break;
                      case 'J':       /* ED: erase screen or parts of it */
                        {
-                           unsigned int i = def(term->esc_args[0], 0) + 1;
-                           if (i > 3)
-                               i = 0;
-                           erase_lots(term, FALSE, !!(i & 2), !!(i & 1));
+                           unsigned int i = def(term->esc_args[0], 0);
+                           if (i == 3) {
+                               /* Erase Saved Lines (xterm)
+                                * This follows Thomas Dickey's xterm. */
+                               term_clrsb(term);
+                           } else {
+                               i++;
+                               if (i > 3)
+                                   i = 0;
+                               erase_lots(term, FALSE, !!(i & 2), !!(i & 1));
+                           }
                        }
                        term->disptop = 0;
                        seen_disp_event(term);