From a245d2050a217281c236ca3d4147077cf65c3bfd Mon Sep 17 00:00:00 2001 From: WormHeamer Date: Sun, 28 Dec 2025 21:15:36 -0500 Subject: use cnext/cprev for move_char_fwd/back --- main.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/main.c b/main.c index 91ef1dc..6c71f05 100644 --- a/main.c +++ b/main.c @@ -48,24 +48,15 @@ u32 move_word_fwd(Txt *t, u32 cur) { } u32 move_char_back(Txt *t, u32 cur) { - while (cur > 0) { - cur--; - u8 c = txt_byte(txt_at(t, cur)); - if ((c & 0xc0) != 0x80) break; - } - return cur; + return txt_ofs(cprev(txt_at(t, cur))); } u32 move_char_fwd(Txt *t, u32 cur) { - u8 b = txt_byte(txt_at(t, cur)); - u32 n = stdc_leading_ones(b); - if (cur + n >= t->len) return t->len; - return cur + n + !n; + return txt_ofs(cnext(txt_at(t, cur))); } u32 del_between(Txt *t, u32 a, u32 b) { if (b < a) { u32 t = a; a = b; b = t; } - //if (b - a > 10) TRAP(); return txt_ofs(txt_delete(txt_at(t, b), b - a)); } @@ -227,7 +218,7 @@ loop: TxtLoc l = cnext(txt_at(&txt, cur)); for (TxtLoc t = l;;) { u32 c = txt_chr_next(&t); - if (c == '\n') break; + if (c == '\n' || c == 0) break; if (c == n) { cur = txt_ofs(l); break; -- cgit v1.2.3