Introduction
Introduction Statistics Contact Development Disclaimer Help
Fix cursor move with wide glyphs - st - simple terminal
git clone git://git.suckless.org/st
Log
Files
Refs
README
LICENSE
---
commit 7473a8d1a57e5f9aba41b953f4e498c35e1c9dc5
parent a3f7420310be0fd778ef9fe2abf20edc2d8dc81a
Author: Quentin Rameau <[email protected]>
Date: Sun, 25 Feb 2024 01:31:31 +0100
Fix cursor move with wide glyphs
st would always move back 1 column,
even with wide glyhps (using more than a single column).
The glyph rune is set on its first column,
and the other ones are to 0,
so loop until we detect the start of the previous glyph.
Diffstat:
M st.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/st.c b/st.c
@@ -86,8 +86,8 @@ enum escape_state {
typedef struct {
Glyph attr; /* current char attributes */
- int x;
- int y;
+ int x; /* terminal column */
+ int y; /* terminal row */
char state;
} TCursor;
@@ -2175,12 +2175,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 ==…
+ ;
+ tmoveto(term.c.x - i, term.c.y);
return;
case '\r': /* CR */
tmoveto(0, term.c.y);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.