diff options
-rw-r--r-- | st.c | 14 | ||||
-rw-r--r-- | st.h | 2 |
2 files changed, 16 insertions, 0 deletions
@@ -559,6 +559,17 @@ escreset(void) { | |||
559 | } | 559 | } |
560 | 560 | ||
561 | void | 561 | void |
562 | tputtab(void) { | ||
563 | int space = TAB - term.c.x % TAB; | ||
564 | |||
565 | if(term.c.x + space >= term.col) | ||
566 | space--; | ||
567 | |||
568 | for(; space > 0; space--) | ||
569 | tputc(' '); | ||
570 | } | ||
571 | |||
572 | void | ||
562 | tputc(char c) { | 573 | tputc(char c) { |
563 | static int inesc = 0; | 574 | static int inesc = 0; |
564 | 575 | ||
@@ -574,6 +585,9 @@ tputc(char c) { | |||
574 | tsetchar(c); | 585 | tsetchar(c); |
575 | tcursor(CSright); | 586 | tcursor(CSright); |
576 | break; | 587 | break; |
588 | case '\t': | ||
589 | tputtab(); | ||
590 | break; | ||
577 | case '\b': | 591 | case '\b': |
578 | tcursor(CSleft); | 592 | tcursor(CSleft); |
579 | break; | 593 | break; |
@@ -66,6 +66,8 @@ enum { CRset=1 , CRupdate=2 }; /* Character state */ | |||
66 | enum { TMwrap=1 , TMinsert=2 }; /* Terminal mode */ | 66 | enum { TMwrap=1 , TMinsert=2 }; /* Terminal mode */ |
67 | enum { SCupdate, SCredraw }; /* screen draw mode */ | 67 | enum { SCupdate, SCredraw }; /* screen draw mode */ |
68 | 68 | ||
69 | typedef int Color; | ||
70 | |||
69 | typedef struct { | 71 | typedef struct { |
70 | char c; /* character code */ | 72 | char c; /* character code */ |
71 | char mode; /* attribute flags */ | 73 | char mode; /* attribute flags */ |