aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--text-objects.c14
-rw-r--r--text-objects.h3
2 files changed, 17 insertions, 0 deletions
diff --git a/text-objects.c b/text-objects.c
index fb5adc2..69ea91c 100644
--- a/text-objects.c
+++ b/text-objects.c
@@ -137,6 +137,20 @@ Filerange text_object_word_find_prev(Text *txt, size_t pos, const char *word) {
}
}
+Filerange text_object_find_next(Text *txt, size_t pos, const char *search) {
+ size_t start = text_find_next(txt, pos, search);
+ if (start == pos)
+ return text_range_empty();
+ return text_range_new(start, start+strlen(search));
+}
+
+Filerange text_object_find_prev(Text *txt, size_t pos, const char *search) {
+ size_t start = text_find_prev(txt, pos, search);
+ if (start == pos)
+ return text_range_empty();
+ return text_range_new(start, start+strlen(search));
+}
+
Filerange text_object_line(Text *txt, size_t pos) {
Filerange r;
r.start = text_line_begin(txt, pos);
diff --git a/text-objects.h b/text-objects.h
index abab46e..9bf13e5 100644
--- a/text-objects.h
+++ b/text-objects.h
@@ -19,6 +19,9 @@ Filerange text_object_word_outer(Text*, size_t pos);
/* find next occurance of `word' (as word not substring) in forward/backward direction */
Filerange text_object_word_find_next(Text*, size_t pos, const char *word);
Filerange text_object_word_find_prev(Text*, size_t pos, const char *word);
+/* find next occurance of a literal string (not regex) in forward/backward direction */
+Filerange text_object_find_next(Text *txt, size_t pos, const char *search);
+Filerange text_object_find_prev(Text *txt, size_t pos, const char *search);
/* same semantics as above but for a longword (i.e. delimited by white spaces) */
Filerange text_object_longword(Text*, size_t pos);
Filerange text_object_longword_outer(Text*, size_t pos);