@ -703,6 +703,9 @@ selected(int x, int y) {  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
		
			
				
					selsnap ( int  mode ,  int  * x ,  int  * y ,  int  direction )  {  
			
		
	
		
			
				
						int  newx ,  newy ,  xt ,  yt ;   
			
		
	
		
			
				
						Glyph  * gp ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						switch ( mode )  {   
			
		
	
		
			
				
						case  SNAP_WORD :   
			
		
	
		
			
				
							/*   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -710,36 +713,31 @@ selsnap(int mode, int *x, int *y, int direction) {  
			
		
	
		
			
				
							 *  beginning  of  a  line .   
			
		
	
		
			
				
							 */   
			
		
	
		
			
				
							for ( ; ; )  {   
			
		
	
		
			
				
								if ( direction  <  0  & &  * x  < =  0 )  {   
			
		
	
		
			
				
									if ( * y  >  0  & &  term . line [ * y  -  1 ] [ term . col - 1 ] . mode    
			
		
	
		
			
				
											&  ATTR_WRAP  )  {   
			
		
	
		
			
				
										* y  - =  1  ;   
			
		
	
		
			
				
										* x  =  term . col - 1  ;   
			
		
	
		
			
				
									}  else  {   
			
		
	
		
			
				
								newx  =  * x  +  direction ;   
			
		
	
		
			
				
								newy  =  * y ;   
			
		
	
		
			
				
								if ( ! BETWEEN ( newx ,  0 ,  term . col  -  1 ) )  {   
			
		
	
		
			
				
									newy  + =  direction ;   
			
		
	
		
			
				
									newx  =  ( newx  +  term . col )  %  term . col ;   
			
		
	
		
			
				
									if  ( ! BETWEEN ( newy ,  0 ,  term . row  -  1 ) )   
			
		
	
		
			
				
										break ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
								if ( direction  >  0  & &  * x  > =  term . col - 1 )  {   
			
		
	
		
			
				
									if ( * y  <  term . row - 1  & &  term . line [ * y ] [ * x ] . mode   
			
		
	
		
			
				
											&  ATTR_WRAP )  {   
			
		
	
		
			
				
										* y  + =  1 ;   
			
		
	
		
			
				
										* x  =  0 ;   
			
		
	
		
			
				
									}  else  {   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
									if ( direction  >  0 )   
			
		
	
		
			
				
										yt  =  * y ,  xt  =  * x ;   
			
		
	
		
			
				
									else   
			
		
	
		
			
				
										yt  =  newy ,  xt  =  newx ;   
			
		
	
		
			
				
									if ( ! ( term . line [ yt ] [ xt ] . mode  &  ATTR_WRAP ) )   
			
		
	
		
			
				
										break ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
								if ( term . line [ * y ] [ * x + direction ] . mode  &  ATTR_WDUMMY )  {   
			
		
	
		
			
				
									* x  + =  direction ;   
			
		
	
		
			
				
									continue ;   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
								if  ( newx  > =  tlinelen ( newy ) )   
			
		
	
		
			
				
									break ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
								if ( * x  > =  tlinelen ( * y )  | |  strchr ( worddelimiters ,   
			
		
	
		
			
				
										term . line [ * y ] [ * x + direction ] .  c [ 0 ] ) )  {    
			
		
	
		
			
				
								gp  =  & term . line [ newy ] [ newx ] ;   
			
		
	
		
			
				
								if  ( ! ( gp - > mode  &  ATTR_WDUMMY )  & &  strchr ( worddelimiters ,  gp - > c [ 0 ] ) )   
			
		
	
		
			
				
									break ;   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
								* x  + =  direction ;   
			
		
	
		
			
				
								* x  =  newx ;   
			
		
	
		
			
				
								* y  =  newy ;   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
							break ;   
			
		
	
		
			
				
						case  SNAP_LINE :