tmoved term.hidec in term.c for consistency, put back delay in xbell() - st - [… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 2181040594ae63f2821899caba0bef34257a6c2b | |
parent c186c8ef9a995616384c425c5568b6913676b252 | |
Author: Aurélien Aptel <[email protected]> | |
Date: Sun, 29 Aug 2010 18:55:15 +0200 | |
moved term.hidec in term.c for consistency, put back delay in xbell() | |
along with duration in config.h, factored some code in tnew()/treset() | |
and cleaned some code. | |
Diffstat: | |
M config.h | 1 + | |
M st.c | 48 +++++++++++++----------------… | |
2 files changed, 21 insertions(+), 28 deletions(-) | |
--- | |
diff --git a/config.h b/config.h | |
t@@ -30,6 +30,7 @@ static const char *colorname[] = { | |
#define DefaultBG 0 | |
#define DefaultCS 1 | |
#define BellCol DefaultFG | |
+#define BellTime 30000 /* microseconds */ | |
/* special keys */ | |
static Key key[] = { | |
diff --git a/st.c b/st.c | |
t@@ -67,6 +67,7 @@ typedef struct { | |
Glyph attr; /* current char attributes */ | |
int x; | |
int y; | |
+ char hide; | |
} TCursor; | |
/* CSI Escape sequence structs */ | |
t@@ -86,7 +87,6 @@ typedef struct { | |
int col; /* nb col */ | |
Line* line; /* screen */ | |
TCursor c; /* cursor */ | |
- char hidec; | |
int top; /* top scroll limit */ | |
int bot; /* bottom scroll limit */ | |
int mode; /* terminal mode flags */ | |
t@@ -221,17 +221,16 @@ die(const char *errstr, ...) { | |
void | |
execsh(void) { | |
char *args[3] = {getenv("SHELL"), "-i", NULL}; | |
- DEFAULT(args[0], "/bin/sh"); /* default shell if getenv() failed */ | |
+ DEFAULT(args[0], "/bin/sh"); /* if getenv() failed */ | |
putenv("TERM=" TNAME); | |
execvp(args[0], args); | |
} | |
void | |
-xbell(void) { /* visual bell */ | |
- XRectangle r = { BORDER, BORDER, xw.bufw, xw.bufh }; | |
+xbell(void) { | |
XSetForeground(xw.dis, dc.gc, dc.col[BellCol]); | |
- XFillRectangles(xw.dis, xw.win, dc.gc, &r, 1); | |
- /* usleep(30000); */ | |
+ XFillRectangle(xw.dis, xw.win, dc.gc, BORDER, BORDER, xw.bufw, xw.bufh… | |
+ usleep(BellTime); | |
draw(SCREEN_REDRAW); | |
} | |
t@@ -325,11 +324,12 @@ tcursor(int mode) { | |
void | |
treset(void) { | |
- term.c.attr.mode = ATTR_NULL; | |
- term.c.attr.fg = DefaultFG; | |
- term.c.attr.bg = DefaultBG; | |
- term.c.x = term.c.y = 0; | |
- term.hidec = 0; | |
+ term.c = (TCursor){{ | |
+ .mode = ATTR_NULL, | |
+ .fg = DefaultFG, | |
+ .bg = DefaultBG | |
+ }, .x = 0, .y = 0, .hide = 0}; | |
+ | |
term.top = 0, term.bot = term.row - 1; | |
term.mode = MODE_WRAP; | |
tclearregion(0, 0, term.col-1, term.row-1); | |
t@@ -337,21 +337,13 @@ treset(void) { | |
void | |
tnew(int col, int row) { | |
- /* screen size */ | |
+ /* set screen size */ | |
term.row = row, term.col = col; | |
- term.top = 0, term.bot = term.row - 1; | |
- /* mode */ | |
- term.mode = MODE_WRAP; | |
- /* cursor */ | |
- term.c.attr.mode = ATTR_NULL; | |
- term.c.attr.fg = DefaultFG; | |
- term.c.attr.bg = DefaultBG; | |
- term.c.x = term.c.y = 0; | |
- term.hidec = 0; | |
- /* allocate screen */ | |
- term.line = calloc(term.row, sizeof(Line)); | |
+ term.line = malloc(term.row * sizeof(Line)); | |
for(row = 0 ; row < term.row; row++) | |
- term.line[row] = calloc(term.col, sizeof(Glyph)); | |
+ term.line[row] = malloc(term.col * sizeof(Glyph)); | |
+ /* setup screen */ | |
+ treset(); | |
} | |
void | |
t@@ -718,7 +710,7 @@ csihandle(void) { | |
case 12: /* att610 -- Stop blinking cursor (IGNORED) */ | |
break; | |
case 25: | |
- term.hidec = 1; | |
+ term.c.hide = 1; | |
break; | |
case 1048: /* XXX: no alt. screen to erase/save */ | |
case 1049: | |
t@@ -767,7 +759,7 @@ csihandle(void) { | |
case 12: /* att610 -- Start blinking cursor (IGNORED) … | |
break; | |
case 25: | |
- term.hidec = 0; | |
+ term.c.hide = 0; | |
break; | |
case 1048: | |
case 1049: /* XXX: no alt. screen to erase/save */ | |
t@@ -1173,7 +1165,7 @@ draw(int dummy) { | |
if(term.line[y][x].state & GLYPH_SET) | |
xdrawc(x, y, term.line[y][x]); | |
- if(!term.hidec) | |
+ if(!term.c.hide) | |
xcursor(CURSOR_DRAW); | |
XCopyArea(xw.dis, xw.buf, xw.win, dc.gc, 0, 0, xw.bufw, xw.bufh, BORDE… | |
XFlush(xw.dis); | |
t@@ -1206,7 +1198,7 @@ draw(int redraw_all) { | |
} | |
xdraws(buf, base, ox, y, i); | |
} | |
- xcursor(term.hidec ? CURSOR_HIDE : CURSOR_DRAW); | |
+ xcursor(term.c.hide ? CURSOR_HIDE : CURSOR_DRAW); | |
XCopyArea(xw.dis, xw.buf, xw.win, dc.gc, 0, 0, xw.bufw, xw.bufh, BORDE… | |
XFlush(xw.dis); | |
} |