handle tabulation (still not perfect)
[st.git] / st.c
diff --git a/st.c b/st.c
index 2318435..79fb161 100644 (file)
--- a/st.c
+++ b/st.c
@@ -364,21 +364,6 @@ void
 tsetattr(int *attr, int l) {
        int i;
 
-#ifdef TRUECOLOR /* ESC [ ? <fg/bg> ; <r> ; <g> ; <b> m */
-       Color col;
-       if(escseq.priv && escseq.len == 4) { /* True color extension :) */
-               col = (escseq.arg[1]<<16) + (escseq.arg[2]<<8) + escseq.arg[3];
-               switch(escseq.arg[0]) {
-               case 3: /* foreground */
-                       term.c.attr.fg = col;
-                       break;
-               case 4: /* background */
-                       term.c.attr.bg = col;
-                       break;
-               }
-       }
-       else
-#endif
                for(i = 0; i < l; i++) {
                        switch(attr[i]) {
                        case 0:
@@ -573,6 +558,17 @@ escreset(void) {
        memset(&escseq, 0, sizeof(escseq));
 }
 
+void
+tputtab(void) {
+    int space = TAB - term.c.x % TAB;
+    
+    if(term.c.x + space >= term.col)
+        space--;
+    
+    for(; space > 0; space--)
+        tputc(' ');
+}
+
 void
 tputc(char c) {
        static int inesc = 0;
@@ -589,6 +585,9 @@ tputc(char c) {
                        tsetchar(c);
                        tcursor(CSright);
                        break;
+        case '\t':
+            tputtab();
+            break;
                case '\b':
                        tcursor(CSleft);
                        break;