From 21adfe438b32cd0cd41ca00e99adfe827c4f4a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Tue, 13 Jun 2017 14:30:56 +0200 Subject: view: do not automatically anchor selections when setting range --- main.c | 2 ++ view.c | 1 - vis-lua.c | 6 ++++-- vis.c | 4 +++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 3f73b6e..db8e969 100644 --- a/main.c +++ b/main.c @@ -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); } diff --git a/view.c b/view.c index 1233b24..14cc4aa 100644 --- a/view.c +++ b/view.c @@ -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)); } diff --git a/vis-lua.c b/vis-lua.c index d5cfa98..5fe006c 100644 --- a/vis-lua.c +++ b/vis-lua.c @@ -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; } } diff --git a/vis.c b/vis.c index 1ba6ff2..cd22e4d 100644 --- a/vis.c +++ b/vis.c @@ -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); -- cgit v1.2.3