handle tabulation (still not perfect)
This commit is contained in:
		
							
								
								
									
										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
	
	Block a user