aboutsummaryrefslogtreecommitdiff
path: root/vis.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2014-09-13 23:00:19 +0200
committerMarc André Tanner <mat@brain-dump.org>2014-09-13 23:00:19 +0200
commit19c1ea602bde2e131bdc89f78786a2efced41d42 (patch)
tree2ccc6d7a4d518d2c73fc296e90b349c791e483c5 /vis.c
parent9da490af05b2aac772f0bdbb934dd313c1271749 (diff)
downloadvis-19c1ea602bde2e131bdc89f78786a2efced41d42.tar.gz
vis-19c1ea602bde2e131bdc89f78786a2efced41d42.tar.xz
Introduce some helper functions dealing with Filerange
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/vis.c b/vis.c
index a52fe9d..7e75dbc 100644
--- a/vis.c
+++ b/vis.c
@@ -831,16 +831,15 @@ static void action_do(Action *a) {
c.range.start = c.range.end = pos;
for (int i = 0; i < a->count; i++) {
r = a->textobj->range(txt, pos);
- // TODO range_valid?
- if (r.start == EPOS || r.end == EPOS)
+ if (!text_range_valid(&r))
break;
if (a->textobj->type == OUTER) {
r.start--;
r.end++;
}
- // TODO c.range = range_union(&c.range, &r);
- c.range.start = MIN(c.range.start, r.start);
- c.range.end = MAX(c.range.end, r.end);
+
+ c.range = text_range_union(&c.range, &r);
+
if (i < a->count - 1) {
if (a->textobj == &textobjs[TEXT_OBJ_LINE_UP]) {
pos = c.range.start - 1;
@@ -851,7 +850,7 @@ static void action_do(Action *a) {
}
} else if (mode == &vis_modes[VIS_MODE_VISUAL]) {
c.range = window_selection_get(win);
- if (c.range.start == EPOS || c.range.end == EPOS)
+ if (!text_range_valid(&c.range))
c.range.start = c.range.end = pos;
}