#define LEN(a) (sizeof(a) / sizeof(a)[0])
#define DEFAULT(a, b) (a) = (a) ? (a) : (b)
#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b))
-#define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f))
+#define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f) || (c) == '\177')
#define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f))
#define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c))
#define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
memset(term.trantbl, sizeof(term.trantbl), CS_USA);
term.charset = 0;
- tclearregion(0, 0, term.col-1, term.row-1);
- tmoveto(0, 0);
- tcursor(CURSOR_SAVE);
+ for(i = 0; i < 2; i++) {
+ tmoveto(0, 0);
+ tcursor(CURSOR_SAVE);
+ tclearregion(0, 0, term.col-1, term.row-1);
+ tswapscreen();
+ }
}
void
int mincol = MIN(col, term.col);
int slide = term.c.y - row + 1;
bool *bp;
- Line *orig;
TCursor c;
if(col < 1 || row < 1) {
/* make use of the LIMIT in tmoveto */
tmoveto(term.c.x, term.c.y);
/* Clearing both screens (it makes dirty all lines) */
- orig = term.line;
c = term.c;
- do {
+ for(i = 0; i < 2; i++) {
if(mincol < col && 0 < minrow) {
tclearregion(mincol, 0, col - 1, minrow - 1);
}
}
tswapscreen();
tcursor(CURSOR_LOAD);
- } while(orig != term.line);
+ }
term.c = c;
}
void
usage(void) {
die("%s " VERSION " (c) 2010-2014 st engineers\n" \
- "usage: st [-a] [-v] [-c class] [-f font] [-g geometry] [-o file]" \
- " [-t title] [-w windowid] [-e command ...]\n", argv0);
+ "usage: st [-a] [-v] [-c class] [-f font] [-g geometry] [-o file]\n"
+ " [-i] [-t title] [-w windowid] [-e command ...]\n", argv0);
}
int