소스 검색

handle tabulation (still not perfect)

Aurélien Aptel 16 년 전
부모
커밋
1cf8b77d27
2개의 변경된 파일16개의 추가작업 그리고 0개의 파일을 삭제
  1. 14 0
      st.c
  2. 2 0
      st.h

+ 14 - 0
st.c

@@ -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 - 0
st.h

@@ -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 */