diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2018-02-24 19:05:10 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2018-02-27 18:56:28 +0100 |
| commit | 234e1b1579e92f66e75720a04e1179288831f231 (patch) | |
| tree | 567992737c3d3d9e9c5be4469e8afd2d94318409 /text-motions.c | |
| parent | e655f312a15fedca7beb1e7bbe57a1a3bf9933e1 (diff) | |
| download | vis-234e1b1579e92f66e75720a04e1179288831f231.tar.gz vis-234e1b1579e92f66e75720a04e1179288831f231.tar.xz | |
text-motion: implement text_line_blank_{prev,next}
Diffstat (limited to 'text-motions.c')
| -rw-r--r-- | text-motions.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/text-motions.c b/text-motions.c index 4dd7b89..16137aa 100644 --- a/text-motions.c +++ b/text-motions.c @@ -481,6 +481,29 @@ size_t text_line_empty_prev(Text *txt, size_t pos) { return it.pos; } +size_t text_line_blank_next(Text *txt, size_t pos) { + char c; + Iterator it = text_iterator_get(txt, pos); + while (text_iterator_byte_find_next(&it, '\n')) { + size_t n = it.pos; + while (text_iterator_byte_next(&it, &c) && blank(c)); + if (c == '\n') + return n + 1; + } + return it.pos; +} + +size_t text_line_blank_prev(Text *txt, size_t pos) { + char c; + Iterator it = text_iterator_get(txt, pos); + while (text_iterator_byte_find_prev(&it, '\n')) { + while (text_iterator_byte_prev(&it, &c) && blank(c)); + if (c == '\n') + return it.pos + 1; + } + return it.pos; +} + size_t text_block_start(Text *txt, size_t pos) { Filerange r = text_object_curly_bracket(txt, pos-1); return text_range_valid(&r) ? r.start-1 : pos; |
