X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=st.c;h=8c42a9caa273a1c6cceb039d290036ed13440533;hb=8304d4f0599b1be2226c28c553547070658d4af3;hp=c161497638ca2c6ba919b556f77f77ad3638f8b3;hpb=87545c612e8ab6e7cd1ef38e2355d0cb86df79f2;p=st.git diff --git a/st.c b/st.c index c161497..8c42a9c 100644 --- a/st.c +++ b/st.c @@ -2153,6 +2153,7 @@ tcontrolcode(uchar ascii) return; case '\032': /* SUB */ tsetchar('?', &term.c.attr, term.c.x, term.c.y); + /* FALLTHROUGH */ case '\030': /* CAN */ csireset(); break; @@ -2307,15 +2308,13 @@ tputc(Rune u) Glyph *gp; control = ISCONTROL(u); - if (!IS_SET(MODE_UTF8 | MODE_SIXEL)) { + if (u < 127 || !IS_SET(MODE_UTF8 | MODE_SIXEL)) { c[0] = u; width = len = 1; } else { len = utf8encode(u, c); - if (!control && (width = wcwidth(u)) == -1) { - memcpy(c, "\357\277\275", 4); /* UTF_INVALID */ + if (!control && (width = wcwidth(u)) == -1) width = 1; - } } if (IS_SET(MODE_PRINT)) @@ -2413,7 +2412,7 @@ check_control_code: */ return; } - if (sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y)) + if (selected(term.c.x, term.c.y)) selclear(); gp = &term.line[term.c.y][term.c.x];