handle tabulation (still not perfect)
This commit is contained in:
		
							parent
							
								
									28abdd24c7
								
							
						
					
					
						commit
						9364de4c64
					
				
							
								
								
									
										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 */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user