|  |  | @ -480,14 +480,46 @@ namespace DFHack | 
			
		
	
		
		
			
				
					
					|  |  |  |                     break; |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 case 27:    // escape sequence
 |  |  |  |                 case 27:    // escape sequence
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                     lock->unlock(); |  |  |  |                     lock->unlock(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     if(!read_char(seq[0]) || !read_char(seq[1])) |  |  |  |                     if (!read_char(seq[0])) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     { |  |  |  |                     { | 
			
		
	
		
		
			
				
					
					|  |  |  |                         lock->lock(); |  |  |  |                         lock->lock(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         return -2; |  |  |  |                         return -2; | 
			
		
	
		
		
			
				
					
					|  |  |  |                     } |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |                     lock->lock(); |  |  |  |                     lock->lock(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     if(seq[0] == '[') |  |  |  |                     if (seq[0] == 'b') | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     { |  |  |  |                     { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         // Back one word
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (raw_cursor == 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         raw_cursor--; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         while (raw_cursor > 0 && !isalnum(raw_buffer[raw_cursor])) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             raw_cursor--; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         while (raw_cursor > 0 && isalnum(raw_buffer[raw_cursor])) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             raw_cursor--; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (!isalnum(raw_buffer[raw_cursor])) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             raw_cursor++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         prompt_refresh(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else if (seq[0] == 'f') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         // Forward one word
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         int len = raw_buffer.size(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (raw_cursor == len) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         raw_cursor++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         while (raw_cursor <= len && !isalnum(raw_buffer[raw_cursor])) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             raw_cursor++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         while (raw_cursor <= len && isalnum(raw_buffer[raw_cursor])) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             raw_cursor++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         prompt_refresh(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else if(seq[0] == '[') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (!read_char(seq[1])) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             lock->lock(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             return -2; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |                         if (seq[1] == 'D') |  |  |  |                         if (seq[1] == 'D') | 
			
		
	
		
		
			
				
					
					|  |  |  |                         { |  |  |  |                         { | 
			
		
	
		
		
			
				
					
					|  |  |  |                             left_arrow: |  |  |  |                             left_arrow: | 
			
		
	
	
		
		
			
				
					|  |  | 
 |