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
db9a332
..
1deb7bc
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-2673,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);