diff options
| author | WormHeamer | 2025-12-28 21:15:36 -0500 |
|---|---|---|
| committer | WormHeamer | 2025-12-28 21:15:36 -0500 |
| commit | a245d2050a217281c236ca3d4147077cf65c3bfd (patch) | |
| tree | e86675c08fee0e7b378546d82da0b67d80962686 | |
| parent | 4c48e993bfcb8672a3aa02b5b3ac9a0149a64e9a (diff) | |
use cnext/cprev for move_char_fwd/back
| -rw-r--r-- | main.c | 15 |
1 files changed, 3 insertions, 12 deletions
@@ -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; |
