aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--st.c14
-rw-r--r--st.h2
2 files changed, 16 insertions, 0 deletions
diff --git a/st.c b/st.c
index ef0fd17..79fb161 100644
--- a/st.c
+++ b/st.c
@@ -559,6 +559,17 @@ escreset(void) {
559} 559}
560 560
561void 561void
562tputtab(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
572void
562tputc(char c) { 573tputc(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;
diff --git a/st.h b/st.h
index 87db5c2..4652a33 100644
--- a/st.h
+++ b/st.h
@@ -66,6 +66,8 @@ enum { CRset=1 , CRupdate=2 }; /* Character state */
66enum { TMwrap=1 , TMinsert=2 }; /* Terminal mode */ 66enum { TMwrap=1 , TMinsert=2 }; /* Terminal mode */
67enum { SCupdate, SCredraw }; /* screen draw mode */ 67enum { SCupdate, SCredraw }; /* screen draw mode */
68 68
69typedef int Color;
70
69typedef struct { 71typedef struct {
70 char c; /* character code */ 72 char c; /* character code */
71 char mode; /* attribute flags */ 73 char mode; /* attribute flags */