     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()

        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"
            # The caret is in the viewport. Make make it visible.
            @movement.extendByOneCharacter(forward) or @movement.extendByOneCharacter backward
        else


  # Scroll the focus into view.
  scrollIntoView: ->
    if @selection.anchorNode
      elementWithFocus = DomUtils.getElementWithFocus @selection, @getDirection() == backward
      Scroller.scrollIntoView elementWithFocus if elementWithFocus

