Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Correct shift amount on MODE_INSERT in tputc()
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
4499be6
..
1deb7bc
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-947,6
+947,8
@@
getsel(void) {
lastx = (sel.ne.y == y) ? sel.ne.x : term.col-1;
}
last = &term.line[y][MIN(lastx, linelen-1)];
lastx = (sel.ne.y == y) ? sel.ne.x : term.col-1;
}
last = &term.line[y][MIN(lastx, linelen-1)];
+ while(last >= gp && last->c[0] == ' ')
+ --last;
for( ; gp <= last; ++gp) {
if(gp->mode & ATTR_WDUMMY)
for( ; gp <= last; ++gp) {
if(gp->mode & ATTR_WDUMMY)
@@
-2671,13
+2673,16
@@
tputc(char *c, int len) {
if(IS_SET(MODE_WRAP) && (term.c.state & CURSOR_WRAPNEXT)) {
gp->mode |= ATTR_WRAP;
tnewline(1);
if(IS_SET(MODE_WRAP) && (term.c.state & CURSOR_WRAPNEXT)) {
gp->mode |= ATTR_WRAP;
tnewline(1);
+ gp = &term.line[term.c.y][term.c.x];
}
}
- if(IS_SET(MODE_INSERT) && term.c.x+
1
< term.col)
- memmove(gp+
1, gp, (term.col - term.c.x - 1
) * sizeof(Glyph));
+ if(IS_SET(MODE_INSERT) && term.c.x+
width
< term.col)
+ memmove(gp+
width, gp, (term.col - term.c.x - width
) * sizeof(Glyph));
- if(term.c.x+width > term.col)
+ if(term.c.x+width > term.col)
{
tnewline(1);
tnewline(1);
+ gp = &term.line[term.c.y][term.c.x];
+ }
tsetchar(c, &term.c.attr, term.c.x, term.c.y);
tsetchar(c, &term.c.attr, term.c.x, term.c.y);
@@
-3920,6
+3925,9
@@
run(void) {
TIMEDIFF(now,
lastblink)));
}
TIMEDIFF(now,
lastblink)));
}
+ drawtimeout.tv_sec = \
+ drawtimeout.tv_nsec / 1E9;
+ drawtimeout.tv_nsec %= (long)1E9;
} else {
tv = NULL;
}
} else {
tv = NULL;
}