diff --git a/st.c b/st.c index 0ef00db..b7bddf3 100644 --- a/st.c +++ b/st.c @@ -3079,12 +3079,16 @@ tstrsequence(uchar c) void tcontrolcode(uchar ascii) { + size_t i; + switch (ascii) { case '\t': /* HT */ tputtab(1); return; case '\b': /* BS */ - tmoveto(term.c.x-1, term.c.y); + for (i = 1; term.c.x && term.line[term.c.y][term.c.x - i].u == 0; ++i) + ; + tmoveto(term.c.x - i, term.c.y); return; case '\r': /* CR */ tmoveto(0, term.c.y); diff --git a/st.h b/st.h index 9dfd7dc..8d8ffa9 100644 --- a/st.h +++ b/st.h @@ -155,8 +155,8 @@ typedef struct { typedef struct { Glyph attr; /* current char attributes */ - int x; - int y; + int x; /* terminal column */ + int y; /* terminal row */ char state; } TCursor;