aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/main.c b/main.c
index 1db04fb..c4abe0b 100644
--- a/main.c
+++ b/main.c
@@ -1280,9 +1280,15 @@ static const char *selection_end(Vis *vis, const char *keys, const Arg *arg) {
}
static const char *selection_restore(Vis *vis, const char *keys, const Arg *arg) {
- for (Cursor *c = view_cursors(vis_view(vis)); c; c = view_cursors_next(c))
+ Text *txt = vis_text(vis);
+ View *view = vis_view(vis);
+ for (Cursor *c = view_cursors(view); c; c = view_cursors_next(c))
view_cursors_selection_restore(c);
- vis_mode_switch(vis, VIS_MODE_VISUAL);
+ Filerange sel = view_selection_get(view);
+ if (text_range_is_linewise(txt, &sel))
+ vis_mode_switch(vis, VIS_MODE_VISUAL_LINE);
+ else
+ vis_mode_switch(vis, VIS_MODE_VISUAL);
return keys;
}