vis
a vi-like editor based on Plan 9's structural regular expressions
git clone https://9o.is/git/vis.git
commit 6b0f1215f52824d8a9bbbd90fc47884e64e62d09 parent f2afa53d68f7b2da72ef0a8a065d1cb06c8f576c Author: Marc André Tanner <mat@brain-dump.org> Date: Fri, 7 Apr 2017 12:52:10 +0200 text: adjust iterator position when switching to adjacent pieces Diffstat:
| M | text.c | | | 6 | ++++-- |
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/text.c b/text.c @@ -1391,12 +1391,14 @@ bool text_iterator_char_get(Iterator *it, char *c) { } bool text_iterator_next(Iterator *it) { - return text_iterator_init(it, it->pos, it->piece ? it->piece->next : NULL, 0); + size_t rem = it->end - it->text; + return text_iterator_init(it, it->pos+rem, it->piece ? it->piece->next : NULL, 0); } bool text_iterator_prev(Iterator *it) { + size_t off = it->text - it->start; size_t len = it->piece && it->piece->prev ? it->piece->prev->len : 0; - return text_iterator_init(it, it->pos, it->piece ? it->piece->prev : NULL, len); + return text_iterator_init(it, it->pos-off, it->piece ? it->piece->prev : NULL, len); } bool text_iterator_valid(const Iterator *it) {