@ -164,7 +164,7 @@ typedef struct {  
															
														 
														
													
														
															
																 
																 
																	int  col ; 	/* nb col */   
																 
																 
																	int  col ; 	/* nb col */   
															
														 
														
													
														
															
																 
																 
																	Line *  line ; 	/* screen */   
																 
																 
																	Line *  line ; 	/* screen */   
															
														 
														
													
														
															
																 
																 
																	Line *  alt ; 	/* alternate screen */   
																 
																 
																	Line *  alt ; 	/* alternate screen */   
															
														 
														
													
														
															
																 
																 
																	bool *  dirty ;   /* dirtyness of lines */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	bool *  dirty ; 	 /* dirtyness of lines */   
															
														 
														
													
														
															
																 
																 
																	TCursor  c ; 	/* cursor */   
																 
																 
																	TCursor  c ; 	/* cursor */   
															
														 
														
													
														
															
																 
																 
																	int  top ; 	/* top    scroll limit */   
																 
																 
																	int  top ; 	/* top    scroll limit */   
															
														 
														
													
														
															
																 
																 
																	int  bot ; 	/* bottom scroll limit */   
																 
																 
																	int  bot ; 	/* bottom scroll limit */   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -172,6 +172,7 @@ typedef struct {  
															
														 
														
													
														
															
																 
																 
																	int  esc ; 	/* escape state flags */   
																 
																 
																	int  esc ; 	/* escape state flags */   
															
														 
														
													
														
															
																 
																 
																	char  title [ ESC_TITLE_SIZ ] ;   
																 
																 
																	char  title [ ESC_TITLE_SIZ ] ;   
															
														 
														
													
														
															
																 
																 
																	int  titlelen ;   
																 
																 
																	int  titlelen ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	bool  * tabs ;   
															
														 
														
													
														
															
																 
																 
																}  Term ;  
																 
																 
																}  Term ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																/* Purely graphic info */  
																 
																 
																/* Purely graphic info */  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -847,12 +848,16 @@ tcursor(int mode) {  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																treset ( void )  {  
																 
																 
																treset ( void )  {  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	unsigned  i ;   
															
														 
														
													
														
															
																 
																 
																	term . c  =  ( TCursor ) { {   
																 
																 
																	term . c  =  ( TCursor ) { {   
															
														 
														
													
														
															
																 
																 
																		. mode  =  ATTR_NULL ,   
																 
																 
																		. mode  =  ATTR_NULL ,   
															
														 
														
													
														
															
																 
																 
																		. fg  =  DefaultFG ,   
																 
																 
																		. fg  =  DefaultFG ,   
															
														 
														
													
														
															
																 
																 
																		. bg  =  DefaultBG   
																 
																 
																		. bg  =  DefaultBG   
															
														 
														
													
														
															
																 
																 
																	} ,  . x  =  0 ,  . y  =  0 ,  . state  =  CURSOR_DEFAULT } ;   
																 
																 
																	} ,  . x  =  0 ,  . y  =  0 ,  . state  =  CURSOR_DEFAULT } ;   
															
														 
														
													
														
															
																 
																 
																	  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	memset ( term . tabs ,  0 ,  term . col  *  sizeof ( * term . tabs ) ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	for  ( i  =  TAB ;  i  <  term . col ;  i  + =  TAB )   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		term . tabs [ i ]  =  1 ;   
															
														 
														
													
														
															
																 
																 
																	term . top  =  0 ,  term . bot  =  term . row  -  1 ;   
																 
																 
																	term . top  =  0 ,  term . bot  =  term . row  -  1 ;   
															
														 
														
													
														
															
																 
																 
																	term . mode  =  MODE_WRAP ;   
																 
																 
																	term . mode  =  MODE_WRAP ;   
															
														 
														
													
														
															
																 
																 
																	tclearregion ( 0 ,  0 ,  term . col - 1 ,  term . row - 1 ) ;   
																 
																 
																	tclearregion ( 0 ,  0 ,  term . col - 1 ,  term . row - 1 ) ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -865,12 +870,14 @@ tnew(int col, int row) {  
															
														 
														
													
														
															
																 
																 
																	term . line  =  malloc ( term . row  *  sizeof ( Line ) ) ;   
																 
																 
																	term . line  =  malloc ( term . row  *  sizeof ( Line ) ) ;   
															
														 
														
													
														
															
																 
																 
																	term . alt   =  malloc ( term . row  *  sizeof ( Line ) ) ;   
																 
																 
																	term . alt   =  malloc ( term . row  *  sizeof ( Line ) ) ;   
															
														 
														
													
														
															
																 
																 
																	term . dirty  =  malloc ( term . row  *  sizeof ( * term . dirty ) ) ;   
																 
																 
																	term . dirty  =  malloc ( term . row  *  sizeof ( * term . dirty ) ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	term . tabs  =  malloc ( term . col  *  sizeof ( * term . tabs ) ) ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	for ( row  =  0 ;  row  <  term . row ;  row + + )  {   
																 
																 
																	for ( row  =  0 ;  row  <  term . row ;  row + + )  {   
															
														 
														
													
														
															
																 
																 
																		term . line [ row ]  =  malloc ( term . col  *  sizeof ( Glyph ) ) ;   
																 
																 
																		term . line [ row ]  =  malloc ( term . col  *  sizeof ( Glyph ) ) ;   
															
														 
														
													
														
															
																 
																 
																		term . alt  [ row ]  =  malloc ( term . col  *  sizeof ( Glyph ) ) ;   
																 
																 
																		term . alt  [ row ]  =  malloc ( term . col  *  sizeof ( Glyph ) ) ;   
															
														 
														
													
														
															
																 
																 
																		term . dirty [ row ]  =  0 ;   
																 
																 
																		term . dirty [ row ]  =  0 ;   
															
														 
														
													
														
															
																 
																 
																	}   
																 
																 
																	}   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	memset ( term . tabs ,  0 ,  term . col  *  sizeof ( * term . tabs ) ) ;   
															
														 
														
													
														
															
																 
																 
																	/* setup screen */   
																 
																 
																	/* setup screen */   
															
														 
														
													
														
															
																 
																 
																	treset ( ) ;   
																 
																 
																	treset ( ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1588,6 +1595,7 @@ tresize(int col, int row) {  
															
														 
														
													
														
															
																 
																 
																	term . line  =  realloc ( term . line ,  row  *  sizeof ( Line ) ) ;   
																 
																 
																	term . line  =  realloc ( term . line ,  row  *  sizeof ( Line ) ) ;   
															
														 
														
													
														
															
																 
																 
																	term . alt   =  realloc ( term . alt ,   row  *  sizeof ( Line ) ) ;   
																 
																 
																	term . alt   =  realloc ( term . alt ,   row  *  sizeof ( Line ) ) ;   
															
														 
														
													
														
															
																 
																 
																	term . dirty  =  realloc ( term . dirty ,  row  *  sizeof ( * term . dirty ) ) ;   
																 
																 
																	term . dirty  =  realloc ( term . dirty ,  row  *  sizeof ( * term . dirty ) ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	term . tabs  =  realloc ( term . tabs ,  col  *  sizeof ( * term . tabs ) ) ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	/* resize each row to new width, zero-pad if needed */   
																 
																 
																	/* resize each row to new width, zero-pad if needed */   
															
														 
														
													
														
															
																 
																 
																	for ( i  =  0 ;  i  <  minrow ;  i + + )  {   
																 
																 
																	for ( i  =  0 ;  i  <  minrow ;  i + + )  {   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -1606,7 +1614,15 @@ tresize(int col, int row) {  
															
														 
														
													
														
															
																 
																 
																		term . line [ i ]  =  calloc ( col ,  sizeof ( Glyph ) ) ;   
																 
																 
																		term . line [ i ]  =  calloc ( col ,  sizeof ( Glyph ) ) ;   
															
														 
														
													
														
															
																 
																 
																		term . alt  [ i ]  =  calloc ( col ,  sizeof ( Glyph ) ) ;   
																 
																 
																		term . alt  [ i ]  =  calloc ( col ,  sizeof ( Glyph ) ) ;   
															
														 
														
													
														
															
																 
																 
																	}   
																 
																 
																	}   
															
														 
														
													
														
															
																 
																 
																	  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	if  ( col  >  term . col )  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		bool  * bp  =  term . tabs  +  term . col ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		memset ( bp ,  0 ,  sizeof ( * term . tabs )  *  ( col  -  term . col ) ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		while  ( - - bp  >  term . tabs  & &  ! * bp )   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																			/* nothing */  ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		for  ( bp  + =  TAB ;  bp  <  term . tabs  +  col ;  bp  + =  TAB )   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																			* bp  =  1 ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	}   
															
														 
														
													
														
															
																 
																 
																	/* update terminal size */   
																 
																 
																	/* update terminal size */   
															
														 
														
													
														
															
																 
																 
																	term . col  =  col ,  term . row  =  row ;   
																 
																 
																	term . col  =  col ,  term . row  =  row ;   
															
														 
														
													
														
															
																 
																 
																	/* make use of the LIMIT in tmoveto */   
																 
																 
																	/* make use of the LIMIT in tmoveto */