]> git.mdlowis.com Git - projs/tide.git/commitdiff
Added function to jump to a specified line
authorMichael D. Lowis <mike.lowis@gentex.com>
Fri, 2 Dec 2016 18:56:23 +0000 (13:56 -0500)
committerMichael D. Lowis <mike.lowis@gentex.com>
Fri, 2 Dec 2016 18:56:23 +0000 (13:56 -0500)
inc/edit.h
libedit/buf.c

index 7177c6239d3581457e26c0f883b5f3231891d2f8..5657d5afd46e96553ace46c6aaa3ec289add741e 100644 (file)
@@ -62,6 +62,7 @@ unsigned buf_ins(Buf* buf, bool indent, unsigned off, Rune rune);
 void buf_del(Buf* buf, unsigned pos);
 unsigned buf_undo(Buf* buf, unsigned pos);
 unsigned buf_redo(Buf* buf, unsigned pos);
+unsigned buf_setln(Buf* buf, unsigned line);
 Rune buf_get(Buf* buf, unsigned pos);
 bool buf_iseol(Buf* buf, unsigned pos);
 unsigned buf_bol(Buf* buf, unsigned pos);
index 3a8573ce025cae5ce9f3443cf90422a3242f36b4..0d7553da96587e80b8f7d3fdc160c0479f901f0b 100644 (file)
@@ -233,6 +233,13 @@ unsigned buf_redo(Buf* buf, unsigned pos) {
     return swaplog(buf, &(buf->redo), &(buf->undo), pos);
 }
 
+unsigned buf_setln(Buf* buf, unsigned line) {
+    unsigned off = 0;
+    while (line > 0 && off < buf_end(buf))
+        line--, off = buf_byline(buf, off, DOWN);
+    return off;
+}
+
 Rune buf_get(Buf* buf, unsigned off) {
     if (off >= buf_end(buf)) return (Rune)'\n';
     size_t bsz = (buf->gapstart - buf->bufstart);