diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2015-07-28 17:23:06 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2015-07-28 17:23:06 +0200 |
| commit | 8324196fedbe006841398a1621fcbf8e8450d4fd (patch) | |
| tree | f511e1e3ab8cff3d66de62f05635a5b23be210ce | |
| parent | 69f3412a8d36b1a4a5da86ae472f7e345741b2fd (diff) | |
| download | vis-8324196fedbe006841398a1621fcbf8e8450d4fd.tar.gz vis-8324196fedbe006841398a1621fcbf8e8450d4fd.tar.xz | |
vis: fix join operator
Only skip last line break if range comes from linewise visual mode.
| -rw-r--r-- | vis.c | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -600,12 +600,15 @@ static size_t op_cursor(OperatorContext *c) { 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 (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) - pos = line_prev; + if (c->cursor) { + /* if selection is from visual linewiese mode, skip last line break */ + Filerange sel = view_cursors_selection_get(c->cursor); + if (text_range_equal(&sel, &c->range) && text_range_is_linewise(txt, &sel)) { + size_t line_prev = text_line_prev(txt, pos); + size_t line_prev_prev = text_line_prev(txt, line_prev); + if (line_prev_prev >= sel.start) + pos = line_prev; + } } do { |
