Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Style matters.
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
21afb52
..
9371b62
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-441,6
+441,7
@@
static int isfullutf8(char *, int);
static ssize_t xwrite(int, char *, size_t);
static void *xmalloc(size_t);
static void *xrealloc(void *, size_t);
static ssize_t xwrite(int, char *, size_t);
static void *xmalloc(size_t);
static void *xrealloc(void *, size_t);
+static char *xstrdup(char *s);
static void (*handler[LASTEvent])(XEvent *) = {
[KeyPress] = kpress,
static void (*handler[LASTEvent])(XEvent *) = {
[KeyPress] = kpress,
@@
-529,6
+530,16
@@
xrealloc(void *p, size_t len) {
return p;
}
return p;
}
+char *
+xstrdup(char *s) {
+ char *p = strdup(s);
+
+ if (!p)
+ die("Out of memory\n");
+
+ return p;
+}
+
int
utf8decode(char *s, long *u) {
uchar c;
int
utf8decode(char *s, long *u) {
uchar c;
@@
-953,11
+964,12
@@
selcopy(void) {
/* append every set & selected glyph to the selection */
for(y = sel.nb.y; y < sel.ne.y + 1; y++) {
gp = &term.line[y][0];
/* append every set & selected glyph to the selection */
for(y = sel.nb.y; y < sel.ne.y + 1; y++) {
gp = &term.line[y][0];
- last =
gp + term.col
;
+ last =
&gp[term.col-1]
;
- while(--last >= gp && !(selected(last - gp, y) && \
- strcmp(last->c, " ") != 0))
- /* nothing */;
+ while(last >= gp && !(selected(last - gp, y) &&
+ strcmp(last->c, " ") != 0)) {
+ --last;
+ }
for(x = 0; gp <= last; x++, ++gp) {
if(!selected(x, y) || (gp->mode & ATTR_WDUMMY))
for(x = 0; gp <= last; x++, ++gp) {
if(!selected(x, y) || (gp->mode & ATTR_WDUMMY))
@@
-2152,20
+2164,21
@@
csireset(void) {
void
strhandle(void) {
char *p = NULL;
void
strhandle(void) {
char *p = NULL;
- int
i, j, narg
;
+ int
j, narg, par
;
strparse();
narg = strescseq.narg;
strparse();
narg = strescseq.narg;
+ par = atoi(strescseq.args[0]);
switch(strescseq.type) {
case ']': /* OSC -- Operating System Command */
switch(strescseq.type) {
case ']': /* OSC -- Operating System Command */
- switch(
i = atoi(strescseq.args[0])
) {
+ switch(
par
) {
case 0:
case 1:
case 2:
if(narg > 1)
xsettitle(strescseq.args[1]);
case 0:
case 1:
case 2:
if(narg > 1)
xsettitle(strescseq.args[1]);
-
break
;
+
return
;
case 4: /* color set */
if(narg < 3)
break;
case 4: /* color set */
if(narg < 3)
break;
@@
-2182,25
+2195,20
@@
strhandle(void) {
*/
redraw(0);
}
*/
redraw(0);
}
- break;
- default:
- fprintf(stderr, "erresc: unknown str ");
- strdump();
- break;
+ return;
}
break;
case 'k': /* old title set compatibility */
xsettitle(strescseq.args[0]);
}
break;
case 'k': /* old title set compatibility */
xsettitle(strescseq.args[0]);
-
break
;
+
return
;
case 'P': /* DSC -- Device Control String */
case '_': /* APC -- Application Program Command */
case '^': /* PM -- Privacy Message */
case 'P': /* DSC -- Device Control String */
case '_': /* APC -- Application Program Command */
case '^': /* PM -- Privacy Message */
- default:
- fprintf(stderr, "erresc: unknown str ");
- strdump();
- /* die(""); */
- break;
+ return;
}
}
+
+ fprintf(stderr, "erresc: unknown str ");
+ strdump();
}
void
}
void
@@
-2793,7
+2801,8
@@
xhints(void) {
sizeh->min_height = sizeh->max_height = xw.fh;
}
sizeh->min_height = sizeh->max_height = xw.fh;
}
- XSetWMProperties(xw.dpy, xw.win, NULL, NULL, NULL, 0, sizeh, &wm, &class);
+ XSetWMProperties(xw.dpy, xw.win, NULL, NULL, NULL, 0, sizeh, &wm,
+ &class);
XFree(sizeh);
}
XFree(sizeh);
}
@@
-3301,8
+3310,6
@@
xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
XftDrawRect(xw.draw, fg, winx, winy + font->ascent + 1,
width, 1);
}
XftDrawRect(xw.draw, fg, winx, winy + font->ascent + 1,
width, 1);
}
- XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, winx, winy, width,
- CEIL((font->ascent + font->descent) * chscale), winx, winy);
/* Reset clip to none. */
XftDrawSetClip(xw.draw, 0);
/* Reset clip to none. */
XftDrawSetClip(xw.draw, 0);
@@
-3401,6
+3408,8
@@
redraw(int timeout) {
void
draw(void) {
drawregion(0, 0, term.col, term.row);
void
draw(void) {
drawregion(0, 0, term.col, term.row);
+ XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w,
+ xw.h, 0, 0);
XSetForeground(xw.dpy, dc.gc,
dc.col[IS_SET(MODE_REVERSE)?
defaultfg : defaultbg].pixel);
XSetForeground(xw.dpy, dc.gc,
dc.col[IS_SET(MODE_REVERSE)?
defaultfg : defaultbg].pixel);
@@
-3792,7
+3801,7
@@
main(int argc, char *argv[]) {
if(argc > 1) {
opt_cmd = &argv[1];
if(argv[1] != NULL && opt_title == NULL) {
if(argc > 1) {
opt_cmd = &argv[1];
if(argv[1] != NULL && opt_title == NULL) {
- titles = strdup(argv[1]);
+ titles =
x
strdup(argv[1]);
opt_title = basename(titles);
}
}
opt_title = basename(titles);
}
}