aboutsummaryrefslogtreecommitdiff
path: root/vis-modes.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-07-03 23:58:13 +0200
committerMarc André Tanner <mat@brain-dump.org>2017-07-04 00:09:37 +0200
commitbfb9071526d770d1d598bb8a9752313154441283 (patch)
treee0969805bb14ce5224611e8d4101e62cec0295e9 /vis-modes.c
parent54ca598fcccff8844bfbe494cd3b325b2fea487f (diff)
downloadvis-bfb9071526d770d1d598bb8a9752313154441283.tar.gz
vis-bfb9071526d770d1d598bb8a9752313154441283.tar.xz
vis: implement `gv` by means of new "^ register
This window local register holds the last active selections.
Diffstat (limited to 'vis-modes.c')
-rw-r--r--vis-modes.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/vis-modes.c b/vis-modes.c
index 6fd05b7..d6ea134 100644
--- a/vis-modes.c
+++ b/vis-modes.c
@@ -201,7 +201,8 @@ static void vis_mode_visual_line_enter(Vis *vis, Mode *old) {
static void vis_mode_visual_line_leave(Vis *vis, Mode *new) {
if (!new->visual) {
- window_selection_save(vis->win);
+ if (!vis->action.op)
+ window_selection_save(vis->win);
view_selections_clear_all(vis->win->view);
} else {
view_cursor_to(vis->win->view, view_cursor_get(vis->win->view));
@@ -210,7 +211,8 @@ static void vis_mode_visual_line_leave(Vis *vis, Mode *new) {
static void vis_mode_visual_leave(Vis *vis, Mode *new) {
if (!new->visual) {
- window_selection_save(vis->win);
+ if (!vis->action.op)
+ window_selection_save(vis->win);
view_selections_clear_all(vis->win->view);
}
}