When MODE_INSERT is set we'd shift characters on the same line forward before inserting our character in tputc(). This did not account for wide characters where width != 1. This patch makes it so we shift the correct amount. --- st.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/st.c b/st.c index db9a332..ab338db 100644 --- a/st.c +++ b/st.c @@ -2675,8 +2675,8 @@ tputc(char *c, int len) { tnewline(1); } - 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 - 1) * sizeof(Glyph)); if(term.c.x+width > term.col) tnewline(1); -- 2.1.4