xterm-17.patch.txt

XFree86 3.1.2Eb - xterm patch #17 - 1996/7/2 - T.Dickey
 
This patch implements for xterm several minor features from ISO 6429 which are
useful for terminfo applications.  The HPA and VPA control sequences allow
cursor movement along a row or column, cutting down a little on the characters
transmitted.  The other codes allow resetting specific graphic rendition
attributes without modifying the other attributes.
 
(now if someone just had time to implement blinking cursors...)
 
--------------------------------------------------------------------------------
 doc/specs/xterm/ctlseqs.ms |   13 +++++++++++!!
 programs/xterm/VTPrsTbl.c  |    6 !!!!!!
 programs/xterm/VTparse.def |    2 ++
 programs/xterm/VTparse.h   |    2 ++
 programs/xterm/charproc.c  |   28 ++++++++++++++++++++++++++++
 programs/xterm/termcap     |    4 !!!!
 programs/xterm/terminfo    |    8 ++++!!!!
 7 files changed, 47 insertions, 16 modifications
--------------------------------------------------------------------------------
Index: VTPrsTbl.c
*** XFree86-3.1.2Eb/xc/programs/xterm/VTPrsTbl.c        Thu Dec 28 05:23:43 1995
--- XFree86-current/xc/programs/xterm/VTPrsTbl.c        Tue Jul  2 19:10:22 1996
***************
*** 454,460 ****
  CASE_CUB,
  CASE_GROUND_STATE,
  CASE_GROUND_STATE,
! CASE_GROUND_STATE,
  /*    H               I               J               K       */
  CASE_CUP,
  CASE_GROUND_STATE,
--- 454,460 ----
  CASE_CUB,
  CASE_GROUND_STATE,
  CASE_GROUND_STATE,
! CASE_HPA,
  /*    H               I               J               K       */
  CASE_CUP,
  CASE_GROUND_STATE,
***************
*** 491,504 ****
  CASE_GROUND_STATE,
  CASE_DA1,
  /*    d               e               f               g       */
! CASE_GROUND_STATE,
  CASE_GROUND_STATE,
  CASE_CUP,
  CASE_TBC,
  /*    h               i               j               k       */
  CASE_SET,
  CASE_GROUND_STATE,
! CASE_GROUND_STATE,
  CASE_GROUND_STATE,
  /*    l               m               n               o       */
  CASE_RST,
--- 491,504 ----
  CASE_GROUND_STATE,
  CASE_DA1,
  /*    d               e               f               g       */
! CASE_VPA,
  CASE_GROUND_STATE,
  CASE_CUP,
  CASE_TBC,
  /*    h               i               j               k       */
  CASE_SET,
  CASE_GROUND_STATE,
! CASE_HPA,
  CASE_GROUND_STATE,
  /*    l               m               n               o       */
  CASE_RST,
Index: VTparse.def
*** XFree86-3.1.2Eb/xc/programs/xterm/VTparse.def       Tue Sep 15 15:28:32 1992
--- XFree86-current/xc/programs/xterm/VTparse.def       Tue Jul  2 19:10:22 1996
***************
*** 77,79 ****
--- 77,81 ----
  CASE_HP_MEM_LOCK
  CASE_HP_MEM_UNLOCK
  CASE_HP_BUGGY_LL
+ CASE_HPA
+ CASE_VPA
Index: VTparse.h
*** XFree86-3.1.2Eb/xc/programs/xterm/VTparse.h Tue Sep 15 15:28:32 1992
--- XFree86-current/xc/programs/xterm/VTparse.h Tue Jul  2 19:10:22 1996
***************
*** 107,109 ****
--- 107,111 ----
  #define CASE_HP_MEM_LOCK 68
  #define CASE_HP_MEM_UNLOCK 69
  #define CASE_HP_BUGGY_LL 70
+ #define CASE_HPA 71
+ #define CASE_VPA 72
Index: charproc.c
*** XFree86-3.1.2Eb/xc/programs/xterm/charproc.c        Sun Jun 30 12:03:00 1996
--- XFree86-current/xc/programs/xterm/charproc.c        Tue Jul  2 19:10:22 1996
***************
*** 966,971 ****
--- 966,986 ----
                        parsestate = groundtable;
                        break;
  
+                case CASE_VPA:
+                       if((row = param[0]) < 1)
+                               row = 1;
+                       CursorSet(screen, row-1, screen->cur_col, term->flags);
+                       parsestate = groundtable;
+                       break;
+ 
+                case CASE_HPA:
+                       /* HPA | CHA */
+                       if((col = param[0]) < 1)
+                               col = 1;
+                       CursorSet(screen, screen->cur_row, col-1, term->flags);
+                       parsestate = groundtable;
+                       break;
+ 
                 case CASE_HP_BUGGY_LL:
                        /* Some HP-UX applications have the bug that they
                           assume ESC F goes to the lower left corner of
***************
*** 1119,1124 ****
--- 1134,1152 ----
                                        break;
                                 case 7:
                                        term->flags |= INVERSE;
+                                       break;
+                                case 22:
+                                       term->flags &= ~BOLD;
+                                       break;
+                                case 24:
+                                       term->flags &= ~UNDERLINE;
+                                       break;
+                                case 25:
+                                       /* Blink, really */
+                                       term->flags &= ~BOLD;
+                                       break;
+                                case 27:
+                                       term->flags &= ~INVERSE;
                                        break;
                                 case 30:
                                 case 31:
Index: termcap
*** XFree86-3.1.2Eb/xc/programs/xterm/termcap   Mon May 13 15:15:18 1996
--- XFree86-current/xc/programs/xterm/termcap   Tue Jul  2 19:10:22 1996
***************
*** 33,43 ****
        :li#24:md=\E[1m:me=\E[m:mr=\E[7m:ms:nd=\E[C:\
        :eA=\E)0:as=^N:ae=^O:\
        :ml=\El:mu=\Em:\
!       :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[m:sr=\EM:\
        :st=\EH:\
        :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:\
        :vi=\E[?25l:ve=\E[?25h:\
!       :up=\E[A:us=\E[4m:ue=\E[m:xn:\
        :ut:Co#8:NC#7:op=\E100m:AB=\E[4%dm:AF=\E[3%dm:
  v2|xterm-65|xterm with tall window 65x80 (X Window System):\
        :li#65:tc=xterm:
--- 33,43 ----
        :li#24:md=\E[1m:me=\E[m:mr=\E[7m:ms:nd=\E[C:\
        :eA=\E)0:as=^N:ae=^O:\
        :ml=\El:mu=\Em:\
!       :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[27m:sr=\EM:\
        :st=\EH:\
        :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:\
        :vi=\E[?25l:ve=\E[?25h:\
!       :up=\E[A:us=\E[4m:ue=\E[24m:xn:\
        :ut:Co#8:NC#7:op=\E100m:AB=\E[4%dm:AF=\E[3%dm:
  v2|xterm-65|xterm with tall window 65x80 (X Window System):\
        :li#65:tc=xterm:
Index: terminfo
*** XFree86-3.1.2Eb/xc/programs/xterm/terminfo  Mon May 13 15:15:18 1996
--- XFree86-current/xc/programs/xterm/terminfo  Tue Jul  2 19:10:22 1996
***************
*** 40,45 ****
--- 40,46 ----
        el1=\E[1K$<3>,
        enacs=\E(B\E)0,
        home=\E[H,
+       hpa=\E[%i%p1%dj,
        ht=^I,
        hts=\EH,
        il=\E[%p1%dL,
***************
*** 90,97 ****
        rmcup=\E[2J\E[?47l\E8,
        rmir=\E[4l,
        rmkx=\E[?1l\E>,
!       rmso=\E[m,
!       rmul=\E[m,
        rs2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
        sc=\E7,
        setab=\E[4%p1%dm,
--- 91,98 ----
        rmcup=\E[2J\E[?47l\E8,
        rmir=\E[4l,
        rmkx=\E[?1l\E>,
!       rmso=\E[27m,
!       rmul=\E[24m,
        rs2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
        sc=\E7,
        setab=\E[4%p1%dm,
***************
*** 107,117 ****
--- 108,120 ----
        smso=\E[7m,
        smul=\E[4m,
        tbc=\E[3g,
+       vpa=\E[%i%p1%dd,
  xterm-65|xterm with tall window 65x80 (X Window System),
        lines#65,
        use=xterm,
  xterm-bold|xterm with bold instead of underline (X Window System),
        smul=\E[1m,
+       rmul=\E[22m,
        use=xterm,
  xtermm|monochrome xterm (X Window System),
        colors@,
***************
*** 126,131 ****
--- 129,135 ----
        use=xterm,
  xterm-boldso|xterm with bold for standout (X Window System),
        smso=\E[1m,
+       rmso=\E[22m,
        use=xterm,
  #
  # vi may work better with this entry, because vi
Index: ctlseqs.ms
*** XFree86-3.1.2Eb/xc/doc/specs/xterm/ctlseqs.ms       Mon Mar 11 13:48:46 1996
--- XFree86-current/xc/doc/specs/xterm/ctlseqs.ms       Tue Jul  2 19:18:50 1996
***************
*** 134,139 ****
--- 134,140 ----
  .[] D D
  .[] E E
  .[] F F
+ .[] G G
  .[] H H
  .[] J J
  .[] K K
***************
*** 317,322 ****
--- 318,325 ----
  Cursor Forward \*(Ps Times (default = 1) (CUF)
  .IP \\*(Es\\*([[\\*(Ps\\*s\\*D
  Cursor Backward \*(Ps Times (default = 1) (CUB)
+ .IP \\*(Es\\*([[\\*(Pm\\*s\\*G
+ Cursor Character Absolute  [column] (default = [row,1]) (CHA)
  .IP \\*(Es\\*([[\\*(Ps\\*s\\*;\\*(Ps\\*s\\*H
  Cursor Position [row;column] (default = [1,1]) (CUP)
  .IP \\*(Es\\*([[\\*(Ps\\*s\\*J
***************
*** 344,349 ****
--- 347,354 ----
    \*(Ps = \*0 or omitted \(-> request attributes from terminal
    \(-> \*(Es\*([[\*?\*1\*;\*2\*c (``I am a VT100 with Advanced
  Video Option.'')
+ .IP \\*(Es\\*([[\\*(Pm\\*s\\*d
+ Line Position Absolute  [row] (default = [1,column]) (VPA)
  .IP \\*(Es\\*([[\\*(Ps\\*s\\*;\\*(Ps\\*s\\*f
  Horizontal and Vertical Position [row;column] (default = [1,1]) (HVP)
  .IP \\*(Es\\*([[\\*(Ps\\*s\\*g
***************
*** 354,359 ****
--- 359,366 ----
  Set Mode (SM)
    \*(Ps = \*4 \(-> Insert Mode (IRM)
    \*(Ps = \*2\*0 \(-> Automatic Newline (LNM)
+ .IP \\*(Es\\*([[\\*(Pm\\*s\\*j
+ Character Position Absolute  [column] (default = [row,1]) (HPA)
  .IP \\*(Es\\*([[\\*(Pm\\*s\\*l
  Reset Mode (RM)
    \*(Ps = \*4 \(-> Replace Mode (IRM)
***************
*** 362,370 ****
  Character Attributes (SGR)
    \*(Ps = \*0 \(-> Normal (default)
    \*(Ps = \*1 \(-> Bold
!   \*(Ps = \*4 \(-> Underscore
    \*(Ps = \*5 \(-> Blink (appears as Bold)
    \*(Ps = \*7 \(-> Inverse
    \*(Ps = \*3\*0 \(-> Set foreground color to Black
    \*(Ps = \*3\*1 \(-> Set foreground color to Red
    \*(Ps = \*3\*2 \(-> Set foreground color to Green
--- 369,381 ----
  Character Attributes (SGR)
    \*(Ps = \*0 \(-> Normal (default)
    \*(Ps = \*1 \(-> Bold
!   \*(Ps = \*4 \(-> Underlined
    \*(Ps = \*5 \(-> Blink (appears as Bold)
    \*(Ps = \*7 \(-> Inverse
+   \*(Ps = \*2\*2 \(-> Normal (neither bold nor faint)
+   \*(Ps = \*2\*4 \(-> Not underlined
+   \*(Ps = \*2\*5 \(-> Steady (not blinking)
+   \*(Ps = \*2\*7 \(-> Positive (not inverse)
    \*(Ps = \*3\*0 \(-> Set foreground color to Black
    \*(Ps = \*3\*1 \(-> Set foreground color to Red
    \*(Ps = \*3\*2 \(-> Set foreground color to Green