aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/mode_visual.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'content_scripts/mode_visual.coffee')
-rw-r--r--content_scripts/mode_visual.coffee7
1 files changed, 6 insertions, 1 deletions
diff --git a/content_scripts/mode_visual.coffee b/content_scripts/mode_visual.coffee
index 011d6775..8c1fb5a4 100644
--- a/content_scripts/mode_visual.coffee
+++ b/content_scripts/mode_visual.coffee
@@ -235,9 +235,14 @@ class VisualMode extends KeyHandlerMode
keyMapping: keyMapping
commandHandler: @commandHandler.bind this
+ # If there was a range selection when the user lanuched visual mode, then we retain the selection on exit.
+ @shouldRetainSelectionOnExit = @options.userLaunchedMode and @selection.type == "Range"
+
@onExit (event = null) =>
+ if @shouldRetainSelectionOnExit
+ null # Retain any selection, regardless of how we exit.
# This mimics vim: when leaving visual mode via Escape, collapse to focus, otherwise collapse to anchor.
- if event?.type == "keydown" and KeyboardUtils.isEscape(event) and @name != "caret"
+ else if event?.type == "keydown" and KeyboardUtils.isEscape(event) and @name != "caret"
@movement.collapseSelectionToFocus()
else
@movement.collapseSelectionToAnchor()