diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2015-07-28 17:00:20 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2015-07-28 17:00:20 +0200 |
| commit | 6d7aa204acaa326ce5ef1c74a7ae88875bc1752a (patch) | |
| tree | 17127655e872286519ebefaa81e1c827e6bb3586 | |
| parent | b366f55f29af3775c055115572dd84873b1921e0 (diff) | |
| download | vis-6d7aa204acaa326ce5ef1c74a7ae88875bc1752a.tar.gz vis-6d7aa204acaa326ce5ef1c74a7ae88875bc1752a.tar.xz | |
text-object: introduce utility function text_range_is_linewise
| -rw-r--r-- | text-objects.c | 6 | ||||
| -rw-r--r-- | text-objects.h | 2 | ||||
| -rw-r--r-- | vis.c | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/text-objects.c b/text-objects.c index d33132c..0d22ca4 100644 --- a/text-objects.c +++ b/text-objects.c @@ -304,3 +304,9 @@ Filerange text_range_linewise(Text *txt, Filerange *rin) { rout.end = text_line_next(txt, rin->end); return rout; } + +bool text_range_is_linewise(Text *txt, Filerange *r) { + return text_range_valid(r) && + r->start == text_line_begin(txt, r->start) && + r->end == text_line_begin(txt, r->end); +} diff --git a/text-objects.h b/text-objects.h index aec84b8..068bafa 100644 --- a/text-objects.h +++ b/text-objects.h @@ -37,5 +37,7 @@ Filerange text_object_backtick(Text*, size_t pos); /* extend a range to cover whole lines */ Filerange text_range_linewise(Text*, Filerange*); +/* test whether a given range covers whole lines */ +bool text_range_is_linewise(Text*, Filerange*); #endif @@ -601,7 +601,7 @@ static size_t op_join(OperatorContext *c) { Text *txt = vis->win->file->text; size_t pos = text_line_begin(txt, c->range.end), prev_pos; /* if selection is linewise, skip last line break */ - if (c->range.start == text_line_begin(txt, c->range.start) && pos == c->range.end) { + if (text_range_is_linewise(txt, &c->range)) { size_t line_prev = text_line_prev(txt, pos); size_t line_prev_prev = text_line_prev(txt, line_prev); if (line_prev_prev >= c->range.start) |
