From b5d121dc1ca4edc0cfff888ba411f0837e6e0ebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Mon, 25 Aug 2014 18:47:00 +0200 Subject: Move motion related stuff into own file --- text-objects.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 text-objects.c (limited to 'text-objects.c') diff --git a/text-objects.c b/text-objects.c new file mode 100644 index 0000000..d6ac4a3 --- /dev/null +++ b/text-objects.c @@ -0,0 +1,38 @@ +#include +#include "text-motions.h" +#include "text-objects.h" + +static Filerange empty = { + .start = -1, + .end = -1, +}; + +// TODO: fix problems with inclusive / exclusive +Filerange text_object_word(Text *txt, size_t pos) { + char c; + Filerange r; + if (!text_byte_get(txt, pos, &c)) + return empty; + if (!isspace(c)) { + r.start = text_word_start_prev(txt, pos); + r.end = text_word_end_next(txt, pos); + } else { + r.start = text_word_end_prev(txt, pos); + r.end = text_word_start_next(txt, pos); + } + return r; +} + +Filerange text_object_sentence(Text *txt, size_t pos) { + Filerange r; + r.start = text_sentence_prev(txt, pos); + r.end = text_sentence_next(txt, pos); + return r; +} + +Filerange text_object_paragraph(Text *txt, size_t pos) { + Filerange r; + r.start = text_paragraph_prev(txt, pos); + r.end = text_paragraph_next(txt, pos); + return r; +} -- cgit v1.2.3