mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Trying to predict the cursor position for UTF-8 output in the same way as for
normal eight-bit output is wrong, separate it into a different function. Fixes spacing when mixing UTF-8 with some escape sequences, notably the way w3m does it.
This commit is contained in:
		
							
								
								
									
										1
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								tmux.h
									
									
									
									
									
								
							@@ -994,6 +994,7 @@ void		 tty_putcode1(struct tty *, enum tty_code_code, int);
 | 
			
		||||
void		 tty_putcode2(struct tty *, enum tty_code_code, int, int);
 | 
			
		||||
void		 tty_puts(struct tty *, const char *);
 | 
			
		||||
void		 tty_putc(struct tty *, u_char);
 | 
			
		||||
void		 tty_pututf8(struct tty *, const struct grid_utf8 *);
 | 
			
		||||
void		 tty_init(struct tty *, char *, char *);
 | 
			
		||||
void		 tty_start_tty(struct tty *);
 | 
			
		||||
void		 tty_stop_tty(struct tty *);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								tty.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								tty.c
									
									
									
									
									
								
							@@ -408,6 +408,23 @@ tty_putc(struct tty *tty, u_char ch)
 | 
			
		||||
		write(tty->log_fd, &ch, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
tty_pututf8(struct tty *tty, const struct grid_utf8 *gu)
 | 
			
		||||
{
 | 
			
		||||
	u_int	i, width;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < UTF8_SIZE; i++) {
 | 
			
		||||
		if (gu->data[i] == 0xff)
 | 
			
		||||
			break;
 | 
			
		||||
		buffer_write8(tty->out, gu->data[i]);
 | 
			
		||||
		if (tty->log_fd != -1)
 | 
			
		||||
			write(tty->log_fd, &gu->data[i], 1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	width = utf8_width(gu->data);
 | 
			
		||||
	tty->cx += width;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
tty_set_title(struct tty *tty, const char *title)
 | 
			
		||||
{
 | 
			
		||||
@@ -912,11 +929,7 @@ tty_cell(
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Otherwise, write UTF-8. */
 | 
			
		||||
	for (i = 0; i < UTF8_SIZE; i++) {
 | 
			
		||||
		if (gu->data[i] == 0xff)
 | 
			
		||||
			break;
 | 
			
		||||
		tty_putc(tty, gu->data[i]);
 | 
			
		||||
	}
 | 
			
		||||
	tty_pututf8(tty, gu);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user