/* macros */
 #define IS_SET(flag)           ((term.mode & (flag)) != 0)
-#define ISCONTROLC0(c)         (BETWEEN(c, 0, 0x1f) || (c) == '\177')
+#define ISCONTROLC0(c)         (BETWEEN(c, 0, 0x1f) || (c) == 0x7f)
 #define ISCONTROLC1(c)         (BETWEEN(c, 0x80, 0x9f))
 #define ISCONTROL(c)           (ISCONTROLC0(c) || ISCONTROLC1(c))
 #define ISDELIM(u)             (u && wcschr(worddelimiters, u))
        bp = &term.line[n][0];
        end = &bp[MIN(tlinelen(n), term.col) - 1];
        if (bp != end || bp->u != ' ') {
-               for ( ;bp <= end; ++bp)
+               for ( ; bp <= end; ++bp)
                        tprinter(buf, utf8encode(bp->u, buf));
        }
        tprinter("\n", 1);
        Glyph *gp;
 
        control = ISCONTROL(u);
-       if (!IS_SET(MODE_UTF8) && !IS_SET(MODE_SIXEL)) {
+       if (!IS_SET(MODE_UTF8 | MODE_SIXEL)) {
                c[0] = u;
                width = len = 1;
        } else {
 
                 * triggers drawing, we first wait a bit to ensure we got
                 * everything, and if nothing new arrives - we draw.
                 * We start with trying to wait minlatency ms. If more content
-                * arrives sooner, we retry with shorter and shorter preiods,
+                * arrives sooner, we retry with shorter and shorter periods,
                 * and eventually draw even without idle after maxlatency ms.
                 * Typically this results in low latency while interacting,
                 * maximum latency intervals during `cat huge.txt`, and perfect