diff --git a/screen-write.c b/screen-write.c index 59b8b027..ba8a226e 100644 --- a/screen-write.c +++ b/screen-write.c @@ -700,7 +700,6 @@ screen_write_cell( struct grid_utf8 gu, *tmp_gu; u_int width, xx, i; struct grid_cell tmp_gc, *tmp_gc2; - size_t size; int insert = 0; /* Ignore padding. */ @@ -737,11 +736,7 @@ screen_write_cell( memcpy(tmp_gu->data + i, udata, UTF8_SIZE - i); /* Assume the previous character has just been input. */ - for (size = 0; size < UTF8_SIZE; size++) { - if (udata[size] == 0xff) - break; - } - tty_write_cmd(ctx->wp, TTY_RAW, udata, size); + tty_write_cmd(ctx->wp, TTY_UTF8CHARACTER, udata); return; } diff --git a/tmux.h b/tmux.h index 38ef0a5f..3e532f75 100644 --- a/tmux.h +++ b/tmux.h @@ -288,7 +288,7 @@ enum tty_cmd { TTY_INSERTCHARACTER, TTY_INSERTLINE, TTY_LINEFEED, - TTY_RAW, + TTY_UTF8CHARACTER, TTY_REVERSEINDEX, }; diff --git a/tty.c b/tty.c index 3a536bae..0643a356 100644 --- a/tty.c +++ b/tty.c @@ -51,7 +51,7 @@ void tty_cmd_deleteline(struct tty *, struct window_pane *, va_list); void tty_cmd_insertcharacter(struct tty *, struct window_pane *, va_list); void tty_cmd_insertline(struct tty *, struct window_pane *, va_list); void tty_cmd_linefeed(struct tty *, struct window_pane *, va_list); -void tty_cmd_raw(struct tty *, struct window_pane *, va_list); +void tty_cmd_utf8character(struct tty *, struct window_pane *, va_list); void tty_cmd_reverseindex(struct tty *, struct window_pane *, va_list); void (*tty_cmds[])(struct tty *, struct window_pane *, va_list) = { @@ -68,7 +68,7 @@ void (*tty_cmds[])(struct tty *, struct window_pane *, va_list) = { tty_cmd_insertcharacter, tty_cmd_insertline, tty_cmd_linefeed, - tty_cmd_raw, + tty_cmd_utf8character, tty_cmd_reverseindex, }; @@ -869,16 +869,19 @@ tty_cmd_cell(struct tty *tty, struct window_pane *wp, va_list ap) } void -tty_cmd_raw(struct tty *tty, unused struct window_pane *wp, va_list ap) +tty_cmd_utf8character( + struct tty *tty, unused struct window_pane *wp, va_list ap) { u_char *buf; - size_t i, len; + size_t i; buf = va_arg(ap, u_char *); - len = va_arg(ap, size_t); - - for (i = 0; i < len; i++) + + for (i = 0; i < UTF8_SIZE; i++) { + if (buf[i] == 0xff) + break; tty_putc(tty, buf[i]); + } } void