handle tabulation (still not perfect)
parent
0ecfcc39b0
commit
1cf8b77d27
14
st.c
14
st.c
|
@ -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
2
st.h
|
@ -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 */
|
||||||
|
|
Reference in New Issue