mirror of
https://github.com/tmux/tmux.git
synced 2025-03-31 03:58:48 +00:00
Don't make assumptions about line wrap on !xenl terminals, means that
using a wrong TERM without xenl is not so broken if used on a sensible terminal.
This commit is contained in:
parent
1721d1994e
commit
d413a945ac
20
tty.c
20
tty.c
@ -424,7 +424,6 @@ void
|
|||||||
tty_putc(struct tty *tty, u_char ch)
|
tty_putc(struct tty *tty, u_char ch)
|
||||||
{
|
{
|
||||||
const char *acs;
|
const char *acs;
|
||||||
u_int sx;
|
|
||||||
|
|
||||||
if (tty->cell.attr & GRID_ATTR_CHARSET) {
|
if (tty->cell.attr & GRID_ATTR_CHARSET) {
|
||||||
acs = tty_acs_get(tty, ch);
|
acs = tty_acs_get(tty, ch);
|
||||||
@ -436,14 +435,18 @@ tty_putc(struct tty *tty, u_char ch)
|
|||||||
bufferevent_write(tty->event, &ch, 1);
|
bufferevent_write(tty->event, &ch, 1);
|
||||||
|
|
||||||
if (ch >= 0x20 && ch != 0x7f) {
|
if (ch >= 0x20 && ch != 0x7f) {
|
||||||
sx = tty->sx;
|
if (tty->cx >= tty->sx) {
|
||||||
if (tty->term->flags & TERM_EARLYWRAP)
|
|
||||||
sx--;
|
|
||||||
|
|
||||||
if (tty->cx >= sx) {
|
|
||||||
tty->cx = 1;
|
tty->cx = 1;
|
||||||
if (tty->cy != tty->rlower)
|
if (tty->cy != tty->rlower)
|
||||||
tty->cy++;
|
tty->cy++;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* On !xenl terminals, force the cursor position to
|
||||||
|
* where we think it should be after a line wrap - this
|
||||||
|
* means it works on sensible terminals as well.
|
||||||
|
*/
|
||||||
|
if (tty->term->flags & TERM_EARLYWRAP)
|
||||||
|
tty_putcode2(tty, TTYC_CUP, tty->cy, tty->cx);
|
||||||
} else
|
} else
|
||||||
tty->cx++;
|
tty->cx++;
|
||||||
}
|
}
|
||||||
@ -1169,8 +1172,9 @@ tty_cell(struct tty *tty, const struct grid_cell *gc,
|
|||||||
u_int i;
|
u_int i;
|
||||||
|
|
||||||
/* Skip last character if terminal is stupid. */
|
/* Skip last character if terminal is stupid. */
|
||||||
if (tty->term->flags & TERM_EARLYWRAP &&
|
if ((tty->term->flags & TERM_EARLYWRAP) &&
|
||||||
tty->cy == tty->sy - 1 && tty->cx == tty->sx - 1)
|
tty->cy == tty->sy - 1 &&
|
||||||
|
tty->cx == tty->sx - 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* If this is a padding character, do nothing. */
|
/* If this is a padding character, do nothing. */
|
||||||
|
Loading…
Reference in New Issue
Block a user