aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-02-07 16:04:54 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-02-07 16:18:25 +0100
commit827575170a9c9a97ea0ccee32d4b0d4ceabb27a0 (patch)
tree23caca67b93d559c72d726d18f24c08d7239121b
parent202146be752af88d7812dd3804e5234e692256ce (diff)
downloadvis-827575170a9c9a97ea0ccee32d4b0d4ceabb27a0.tar.gz
vis-827575170a9c9a97ea0ccee32d4b0d4ceabb27a0.tar.xz
text-object: introduce text_object_filename
-rw-r--r--text-objects.c15
-rw-r--r--text-objects.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/text-objects.c b/text-objects.c
index 3ea81e4..a0ffe3c 100644
--- a/text-objects.c
+++ b/text-objects.c
@@ -325,6 +325,21 @@ Filerange text_object_number(Text *txt, size_t pos) {
return r;
}
+static int is_filename_boundary(int c) {
+ switch (c) {
+ case ';': case ':': case '|':
+ case '"': case '\'':
+ case '<': case '>':
+ return true;
+ default:
+ return isspace(c);
+ }
+}
+
+Filerange text_object_filename(Text *txt, size_t pos) {
+ return text_object_range(txt, pos, is_filename_boundary);
+}
+
Filerange text_range_linewise(Text *txt, Filerange *rin) {
Filerange rout = *rin;
rout.start = text_line_begin(txt, rin->start);
diff --git a/text-objects.h b/text-objects.h
index 727c271..e94d7c3 100644
--- a/text-objects.h
+++ b/text-objects.h
@@ -47,6 +47,7 @@ Filerange text_object_backtick(Text*, size_t pos);
Filerange text_object_range(Text*, size_t pos, int (*isboundary)(int));
/* a number in either decimal, hex or octal format */
Filerange text_object_number(Text*, size_t pos);
+Filerange text_object_filename(Text*, size_t pos);
/* extend a range to cover whole lines */
Filerange text_range_linewise(Text*, Filerange*);