summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiltjo Posthuma <hiltjo@codemadness.org>2024-03-30 12:30:49 +0100
committerHiltjo Posthuma <hiltjo@codemadness.org>2024-03-30 12:37:06 +0100
commit8c68ec52419f3f965164cafcf589b87e8961348d (patch)
tree9ce5f2d0432e0fddeeb527e672a3620590186469
parent5ce971628106fb767ef91bf4386227423f5fdf98 (diff)
Revert "Fix cursor move with wide glyphs"
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"
-rw-r--r--st.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/st.c b/st.c
index 683493d..b9f66e7 100644
--- 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);