aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--text.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/text.c b/text.c
index df8eb21..9a1bd42 100644
--- a/text.c
+++ b/text.c
@@ -1434,6 +1434,10 @@ size_t text_lineno_by_pos(Text *txt, size_t pos) {
}
Mark text_mark_set(Text *txt, size_t pos) {
+ if (pos == 0)
+ return (Mark)&txt->begin;
+ if (pos == txt->size)
+ return (Mark)&txt->end;
Location loc = piece_get_extern(txt, pos);
if (!loc.piece)
return NULL;
@@ -1445,6 +1449,10 @@ size_t text_mark_get(Text *txt, Mark mark) {
if (!mark)
return EPOS;
+ if (mark == (Mark)&txt->begin)
+ return 0;
+ if (mark == (Mark)&txt->end)
+ return txt->size;
for (Piece *p = txt->begin.next; p->next; p = p->next) {
if (p->data <= mark && mark < p->data + p->len)