summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorWormHeamer2025-12-28 21:15:36 -0500
committerWormHeamer2025-12-28 21:15:36 -0500
commita245d2050a217281c236ca3d4147077cf65c3bfd (patch)
treee86675c08fee0e7b378546d82da0b67d80962686 /main.c
parent4c48e993bfcb8672a3aa02b5b3ac9a0149a64e9a (diff)
use cnext/cprev for move_char_fwd/back
Diffstat (limited to 'main.c')
-rw-r--r--main.c15
1 files 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;