From 42da6e75c05cf1f184e4d45601bb5ed0679e40bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Wed, 3 Feb 2016 12:45:48 +0100 Subject: text-motion: export custom word motion functions --- text-motions.c | 8 ++++---- text-motions.h | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/text-motions.c b/text-motions.c index b3216dc..51abb8e 100644 --- a/text-motions.c +++ b/text-motions.c @@ -277,7 +277,7 @@ size_t text_range_line_prev(Text *txt, Filerange *r, size_t pos) { return newpos != pos && r->start <= newpos ? newpos : EPOS; } -static size_t text_customword_start_next(Text *txt, size_t pos, int (*isboundry)(int)) { +size_t text_customword_start_next(Text *txt, size_t pos, int (*isboundry)(int)) { char c; Iterator it = text_iterator_get(txt, pos); if (!text_iterator_byte_get(&it, &c)) @@ -290,7 +290,7 @@ static size_t text_customword_start_next(Text *txt, size_t pos, int (*isboundry) return it.pos; } -static size_t text_customword_start_prev(Text *txt, size_t pos, int (*isboundry)(int)) { +size_t text_customword_start_prev(Text *txt, size_t pos, int (*isboundry)(int)) { char c; Iterator it = text_iterator_get(txt, pos); while (text_iterator_char_prev(&it, &c) && isspace((unsigned char)c)); @@ -301,7 +301,7 @@ static size_t text_customword_start_prev(Text *txt, size_t pos, int (*isboundry) return pos; } -static size_t text_customword_end_next(Text *txt, size_t pos, int (*isboundry)(int)) { +size_t text_customword_end_next(Text *txt, size_t pos, int (*isboundry)(int)) { char c; Iterator it = text_iterator_get(txt, pos); while (text_iterator_char_next(&it, &c) && isspace((unsigned char)c)); @@ -312,7 +312,7 @@ static size_t text_customword_end_next(Text *txt, size_t pos, int (*isboundry)(i return pos; } -static size_t text_customword_end_prev(Text *txt, size_t pos, int (*isboundry)(int)) { +size_t text_customword_end_prev(Text *txt, size_t pos, int (*isboundry)(int)) { char c; Iterator it = text_iterator_get(txt, pos); if (!text_iterator_byte_get(&it, &c)) diff --git a/text-motions.h b/text-motions.h index 32e4a1f..b1388c8 100644 --- a/text-motions.h +++ b/text-motions.h @@ -76,6 +76,13 @@ size_t text_word_end_next(Text*, size_t pos); size_t text_word_end_prev(Text*, size_t pos); size_t text_word_start_next(Text*, size_t pos); size_t text_word_start_prev(Text*, size_t pos); +/* + * More general versions of the above, define your own word boundaries. + */ +size_t text_customword_start_next(Text*, size_t pos, int (*isboundry)(int)); +size_t text_customword_start_prev(Text*, size_t pos, int (*isboundry)(int)); +size_t text_customword_end_next(Text*, size_t pos, int (*isboundry)(int)); +size_t text_customword_end_prev(Text*, size_t pos, int (*isboundry)(int)); /* TODO: implement the following semantics * A sentence is defined as ending at a '.', '!' or '?' followed by either the * end of a line, or by a space or tab. Any number of closing ')', ']', '"' -- cgit v1.2.3