aboutsummaryrefslogtreecommitdiff
path: root/text-objects.c
diff options
context:
space:
mode:
Diffstat (limited to 'text-objects.c')
-rw-r--r--text-objects.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/text-objects.c b/text-objects.c
index 0308e8c..9f646dc 100644
--- a/text-objects.c
+++ b/text-objects.c
@@ -235,6 +235,25 @@ Filerange text_object_paragraph(Text *txt, size_t pos) {
return r;
}
+Filerange text_object_function(Text *txt, size_t pos) {
+ size_t a = text_function_start_prev(txt, pos);
+ size_t b = text_function_end_next(txt, pos);
+ if (text_function_end_next(txt, a) == b) {
+ Filerange r = text_range_new(a, b+1);
+ return text_range_linewise(txt, &r);
+ }
+ return text_range_empty();
+}
+
+Filerange text_object_function_inner(Text *txt, size_t pos) {
+ Filerange r = text_object_function(txt, pos);
+ if (!text_range_valid(&r))
+ return r;
+ size_t b = text_function_end_next(txt, pos);
+ size_t a = text_bracket_match(txt, b);
+ return text_range_new(a+1, b-1);
+}
+
static Filerange text_object_bracket(Text *txt, size_t pos, char type) {
char c, open, close;
int opened = 1, closed = 1;