diff options
| -rw-r--r-- | main.c | 2 | ||||
| -rw-r--r-- | view.c | 1 | ||||
| -rw-r--r-- | vis-lua.c | 6 | ||||
| -rw-r--r-- | vis.c | 4 |
4 files changed, 9 insertions, 4 deletions
@@ -1380,6 +1380,7 @@ static const char *cursors_select_next(Vis *vis, const char *keys, const Arg *ar size_t pos = text_char_prev(txt, word.end); if ((s = view_selections_new(view, pos))) { view_selections_set(s, &word); + view_selections_anchor(s); view_selections_primary_set(s); goto out; } @@ -1392,6 +1393,7 @@ static const char *cursors_select_next(Vis *vis, const char *keys, const Arg *ar size_t pos = text_char_prev(txt, word.end); if ((s = view_selections_new(view, pos))) { view_selections_set(s, &word); + view_selections_anchor(s); view_selections_primary_set(s); } @@ -1227,7 +1227,6 @@ void view_selections_set(Selection *s, const Filerange *r) { s->anchor = text_mark_set(txt, r->start); s->cursor = text_mark_set(txt, end); } - s->anchored = true; view_cursors_to(s, text_mark_get(s->view->text, s->cursor)); } @@ -1887,10 +1887,12 @@ static int window_cursor_newindex(lua_State *L) { if (strcmp(key, "selection") == 0) { Filerange range = getrange(L, 3); - if (text_range_valid(&range)) + if (text_range_valid(&range)) { view_selections_set(sel, &range); - else + view_selections_anchor(sel); + } else { view_selection_clear(sel); + } return 0; } } @@ -971,8 +971,10 @@ void vis_do(Vis *vis) { if (linewise && vis->mode != &vis_modes[VIS_MODE_VISUAL]) c.range = text_range_linewise(txt, &c.range); - if (vis->mode->visual) + if (vis->mode->visual) { view_selections_set(sel, &c.range); + view_selections_anchor(sel); + } if (a->op) { size_t pos = a->op->func(vis, txt, &c); |
