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));
}
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;
@ -574,6 +585,9 @@ tputc(char c) {
tsetchar(c);
tcursor(CSright);
break;
case '\t':
tputtab();
break;
case '\b':
tcursor(CSleft);
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 { SCupdate, SCredraw }; /* screen draw mode */
typedef int Color;
typedef struct {
char c; /* character code */
char mode; /* attribute flags */