mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 13:37:12 +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:
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