aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vis.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/vis.c b/vis.c
index dc30bda..48599b3 100644
--- a/vis.c
+++ b/vis.c
@@ -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 {