handle tabulation (still not perfect)

master
Aurélien Aptel 2009-05-14 01:03:17 +02:00
parent 0ecfcc39b0
commit 1cf8b77d27
2 changed files with 16 additions and 0 deletions

14
st.c
View File

@ -558,6 +558,17 @@ escreset(void) {
memset(&escseq, 0, sizeof(escseq)); 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 void
tputc(char c) { tputc(char c) {
static int inesc = 0; static int inesc = 0;
@ -574,6 +585,9 @@ tputc(char c) {
tsetchar(c); tsetchar(c);
tcursor(CSright); tcursor(CSright);
break; break;
case '\t':
tputtab();
break;
case '\b': case '\b':
tcursor(CSleft); tcursor(CSleft);
break; break;

2
st.h
View File

@ -66,6 +66,8 @@ enum { CRset=1 , CRupdate=2 }; /* Character state */
enum { TMwrap=1 , TMinsert=2 }; /* Terminal mode */ enum { TMwrap=1 , TMinsert=2 }; /* Terminal mode */
enum { SCupdate, SCredraw }; /* screen draw mode */ enum { SCupdate, SCredraw }; /* screen draw mode */
typedef int Color;
typedef struct { typedef struct {
char c; /* character code */ char c; /* character code */
char mode; /* attribute flags */ char mode; /* attribute flags */