diff options
| -rw-r--r-- | content_scripts/mode_visual.coffee | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/content_scripts/mode_visual.coffee b/content_scripts/mode_visual.coffee index cc1baf34..290fc1f4 100644 --- a/content_scripts/mode_visual.coffee +++ b/content_scripts/mode_visual.coffee @@ -159,7 +159,7 @@ class Movement # Scroll the focus into view. scrollIntoView: -> - unless @selection.type == "None" + if @selection.anchorNode elementWithFocus = DomUtils.getElementWithFocus @selection, @getDirection() == backward Scroller.scrollIntoView elementWithFocus if elementWithFocus @@ -240,7 +240,7 @@ class VisualMode extends KeyHandlerMode 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" + @shouldRetainSelectionOnExit = @options.userLaunchedMode and 0 < @selection.toString().length @onExit (event = null) => if @shouldRetainSelectionOnExit @@ -269,7 +269,7 @@ class VisualMode extends KeyHandlerMode # Establish or use the initial selection. If that's not possible, then enter caret mode. unless @name == "caret" - if @selection.type in [ "Caret", "Range" ] + if @selection.anchorNode? selectionRect = @selection.getRangeAt(0).getBoundingClientRect() if window.vimiumDomTestsAreRunning # We're running the DOM tests, where getBoundingClientRect() isn't available. @@ -277,7 +277,7 @@ class VisualMode extends KeyHandlerMode selectionRect = Rect.intersect selectionRect, Rect.create 0, 0, window.innerWidth, window.innerHeight if selectionRect.height >= 0 and selectionRect.width >= 0 # The selection is visible in the current viewport. - if @selection.type == "Caret" + if @selection.toString().length == 0 # The caret is in the viewport. Make make it visible. @movement.extendByOneCharacter(forward) or @movement.extendByOneCharacter backward else @@ -285,7 +285,7 @@ class VisualMode extends KeyHandlerMode # more likely to be interested in visible content. @selection.removeAllRanges() - if @selection.type != "Range" and @name != "caret" + unless @selection.anchorNode new CaretMode HUD.showForDuration "No usable selection, entering caret mode...", 2500 @@ -341,15 +341,14 @@ class CaretMode extends VisualMode super extend options, name: "caret", indicator: "Caret mode", alterMethod: "move" # Establish the initial caret. - switch @selection.type - when "None" - @establishInitialSelectionAnchor() - if @selection.type == "None" - @exit() - HUD.showForDuration "Create a selection before entering visual mode.", 2500 - return - when "Range" - @movement.collapseSelectionToAnchor() + if @selection.anchorNode + @movement.collapseSelectionToAnchor() + else + @establishInitialSelectionAnchor() + unless @selection.anchorNode + @exit() + HUD.showForDuration "Create a selection before entering visual mode.", 2500 + return @movement.extendByOneCharacter forward @movement.scrollIntoView() |
