]> Sergey Matveev's repositories - st.git/commitdiff
Revert "Fix cursor move with wide glyphs"
authorHiltjo Posthuma <hiltjo@codemadness.org>
Sat, 30 Mar 2024 11:30:49 +0000 (12:30 +0100)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Sat, 30 Mar 2024 11:37:06 +0000 (12:37 +0100)
This reverts commit 7473a8d1a57e5f9aba41b953f4e498c35e1c9dc5.

This patch needs some more work. It caused regressions with programs that use
GNU readline, etc.

Original test-case example from Tim Culverhouse <tim@timculverhouse.com>:

printf " đŸ˜€" && sleep 2 && printf "\e[D" && sleep 2 && printf "\e[D" && sleep 2

After the patch it caused regressions, example test-case:

printf "A歗\bB\n"

st.c

diff --git a/st.c b/st.c
index 683493d3aa66fc346eb0eadc1c6e8f8bdd08dac8..b9f66e71163f0707bb477f9fa5346f5dad27683d 100644 (file)
--- a/st.c
+++ b/st.c
@@ -86,8 +86,8 @@ enum escape_state {
 
 typedef struct {
        Glyph attr; /* current char attributes */
-       int x; /* terminal column */
-       int y; /* terminal row */
+       int x;
+       int y;
        char state;
 } TCursor;
 
@@ -2175,16 +2175,12 @@ tstrsequence(uchar c)
 void
 tcontrolcode(uchar ascii)
 {
-       size_t i;
-
        switch (ascii) {
        case '\t':   /* HT */
                tputtab(1);
                return;
        case '\b':   /* BS */
-               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);
+               tmoveto(term.c.x-1, term.c.y);
                return;
        case '\r':   /* CR */
                tmoveto(0, term.c.y);