@ -375,6 +375,7 @@ static void tdeletechar(int);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tdeleteline ( int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tinsertblank ( int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tinsertblankline ( int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  tlinelen ( int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tmoveto ( int ,  int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tmoveato ( int ,  int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tnew ( int ,  int ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -920,7 +921,7 @@ bpress(XEvent *e) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					char  *  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					getsel ( void )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						char  * str ,  * ptr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  x ,  y ,  bufsize ,  size ,  ex ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  y ,  bufsize ,  size ,  lastx ,  linelen ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						Glyph  * gp ,  * last ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( sel . ob . x  = =  - 1 )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -931,16 +932,19 @@ getsel(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						/* append every set & selected glyph to the selection */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						for ( y  =  sel . nb . y ;  y  <  sel . ne . y  +  1 ;  y + + )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							gp  =  & term . line [ y ] [ 0 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							last  =  & gp [ term . col - 1 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							linelen  =  tlinelen ( y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							while ( last  > =  gp  & &  ! ( selected ( last  -  gp ,  y )  & &   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									      strcmp ( last - > c ,  "   " )  ! =  0 ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								- - last ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( sel . type  = =  SEL_RECTANGULAR )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								gp  =  & term . line [ y ] [ sel . nb . x ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								lastx  =  sel . ne . x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}  else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								gp  =  & term . line [ y ] [ sel . nb . y  = =  y  ?  sel . nb . x  :  0 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								lastx  =  ( sel . ne . y  = =  y )  ?  sel . ne . x  :  term . col - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							last  =  & term . line [ y ] [ MIN ( lastx ,  linelen - 1 ) ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							for ( x  =  0 ;  gp  < =  last ;  x + + ,  + + gp )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								if ( ! selected ( x ,  y )  | |  ( gp - > mode  &  ATTR_WDUMMY ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							for (  ;  gp  < =  last ;  + + gp )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								if ( gp - > mode  &  ATTR_WDUMMY )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								size  =  utf8len ( gp - > c ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -957,20 +961,8 @@ getsel(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							 *  st .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							 *  FIXME :  Fix  the  computer  world .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							 */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( y  <  sel . ne . y  & &  ! ( x  >  0  & &  ( gp - 1 ) - > mode  &  ATTR_WRAP ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( sel . ne . y  >  y  | |  lastx  > =  linelen )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								* ptr + +  =  ' \n ' ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							/*   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							 *  If  the  last  selected  line  expands  in  the  selection   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							 *  after  the  visible  text  ' \n '  is  appended .   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							 */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( y  = =  sel . ne . y )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								ex  =  sel . ne . x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								if ( sel . nb . y  = =  sel . ne . y  & &  sel . ne . x  <  sel . nb . x )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									ex  =  sel . nb . x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								if ( tlinelen ( y )  <  ex )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									* ptr + +  =  ' \n ' ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						* ptr  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						return  str ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -2287,12 +2279,10 @@ tdumpline(int n) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						Glyph  * bp ,  * end ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						bp  =  & term . line [ n ] [ 0 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						end  =  & bp [ term . col - 1 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						while ( end  >  bp  & &  ! strcmp ( "   " ,  end - > c ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							- - end ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( bp  ! =  end  | |  strcmp ( bp - > c ,  "   " ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						end  =  & bp [ MIN ( tlinelen ( n ) ,  term . col )  -  1 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( bp  ! =  end  | |  bp - > c [ 0 ]  ! =  '   ' )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							for (  ; bp  < =  end ;  + + bp )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								tprinter ( bp - > c ,  str len( bp - > c ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								tprinter ( bp - > c ,  utf8len ( bp - > c ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						tprinter ( " \n " ,  1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}