*** empty log message ***
authorroot <root>
Sun, 15 Jun 2008 10:15:39 +0000 (10:15 +0000)
committerroot <root>
Sun, 15 Jun 2008 10:15:39 +0000 (10:15 +0000)
Changes
doc/rxvt.7.pod
src/screen.C

diff --git a/Changes b/Changes
index 1b7e9f5a1fdb431dd7268998f580af98ebd1dc4a..869887ed61e8fa29d360e5dca281379769b5cec9 100644 (file)
--- a/Changes
+++ b/Changes
@@ -30,6 +30,7 @@ TODO: implement initial chdir for tabs by making it a resource?
           after EILSEQ (patch by Neil Booth). This fixes the
           issue of rxvt-unicode not properly displaying text after an illegal
           sequence on NetBSD and probably other systems.
+        - implement ESC [ 3 K as a more rational alternative to ESC [ 0 K.
        - made tabs moveable (based on a patch by Petr Machata).
         - support relative paths for RXVT_SOCKET in urxvtd.
         - better diagnostic on 0x0 window geometries.
index 73de779a3b529cf5e91165fee510d807925b2325..b850bcfee13a3c82f9e1f50691ecec952963db9b 100644 (file)
@@ -1459,6 +1459,8 @@ Erase in Line (EL)
        B<< C<Ps = 0> >>        Clear to Right (default)
        B<< C<Ps = 1> >>        Clear to Left
        B<< C<Ps = 2> >>        Clear All
+       B<< C<Ps = 3> >>        Like Ps = 0, but is ignored when wrapped
+                               (@@RXVT_NAME@@ extension)
 
 =end table
 
index 2d34281a5ad35625819d76a38ea8ce5c70cac8b1..4e0f21d1903bd0085d1aa6ce2108d1fd6e0c7bf1 100644 (file)
@@ -1227,6 +1227,7 @@ rxvt_term::scr_index (enum page_dirn direction) NOTHROW
  * XTERM_SEQ: Clear line to right: ESC [ 0 K
  * XTERM_SEQ: Clear line to left : ESC [ 1 K
  * XTERM_SEQ: Clear whole line   : ESC [ 2 K
+ * extension: clear to right unless wrapped: ESC [ 3 K
  */
 void
 rxvt_term::scr_erase_line (int mode) NOTHROW
@@ -1245,21 +1246,31 @@ rxvt_term::scr_erase_line (int mode) NOTHROW
 
   switch (mode)
     {
+      case 3:
+        if (screen.flags & Screen_WrapNext)
+          return;
+
+        /* fall through */
+
       case 0:                     /* erase to end of line */
         col = screen.cur.col;
         num = ncol - col;
         min_it (line.l, col);
+
         if (ROWCOL_IN_ROW_AT_OR_AFTER (selection.beg, screen.cur)
             || ROWCOL_IN_ROW_AT_OR_AFTER (selection.end, screen.cur))
           CLEAR_SELECTION ();
         break;
+
       case 1:                     /* erase to beginning of line */
         col = 0;
         num = screen.cur.col + 1;
+
         if (ROWCOL_IN_ROW_AT_OR_BEFORE (selection.beg, screen.cur)
             || ROWCOL_IN_ROW_AT_OR_BEFORE (selection.end, screen.cur))
           CLEAR_SELECTION ();
         break;
+
       case 2:                     /* erase whole line */
         col = 0;
         num = ncol;