# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 93901ca4fee8a1ab71cb8b918f3d65404460f9ce
    parent ee7fd748ac7bfabda2ac37251d230b45adb3e138
    Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
    Date:   Wed, 29 Aug 2012 19:59:43 +0200

    Add HTS sequence

    This sequence adds a new tab stop in the current horizontal position. This
    means that tputtab must be look for the next tab stop in the tabs array
    instead of using a hard coded value offset. Also, CHT sequence XXX message
    is removed because it is not a vt10x sequence (as far as I know it is a
    vt50x sequence), and it is not implemented by linux virtual terminal neither
    by xterm.

    Signed-off-by: Roberto E. Vargas Caballero <k0ga@shike2.com>
    ---
     st.c |   12 +++++++++---
     1 file changed, 9 insertions(+), 3 deletions(-)
    Diffstat:
    Mst.c | 12+++++++++---

    1 file changed, 9 insertions(+), 3 deletions(-)
    diff --git a/st.c b/st.c
    @@ -1214,7 +1214,6 @@ csihandle(void) {
     		DEFAULT(escseq.arg[1], 1);
     		tmoveto(escseq.arg[1]-1, escseq.arg[0]-1);
     		break;
    -	/* XXX: (CSI n I) CHT -- Cursor Forward Tabulation <n> tab stops */
     	case 'J': /* ED -- Clear screen */
     		sel.bx = -1;
     		switch(escseq.arg[0]) {
    @@ -1429,8 +1428,11 @@ csireset(void) {

     void
     tputtab(void) {
    -	int space = TAB - term.c.x % TAB;
    -	tmoveto(term.c.x + space, term.c.y);
    +	unsigned x;
    +
    +	for (x = term.c.x + 1; x < term.col && !term.tabs[x]; ++x)
    +		/* nothing */ ;
    +	tmoveto(x, term.c.y);
     }

     void
    @@ -1491,6 +1493,10 @@ tputc(char *c) {
     				tnewline(1); /* always go to first col */
     				term.esc = 0;
     				break;
    +			case 'H': /* HTS -- Horizontal tab stop */
    +				term.tabs[term.c.x] = 1;
    +				term.esc = 0;
    +				break;
     			case 'M': /* RI -- Reverse index */
     				if(term.c.y == term.top)
     					tscrolldown(term.top, 1);