     # Handle with config onDidChange subscription?
     @hover = new Hover(this, 'showHoverOnOperate')
     @hoverSearchCounter = new Hover(this, 'showHoverSearchCounter')
-
     @searchHistory = new SearchHistoryManager(this)
     @input = new Input(this)
     @search = new Search(this)
-
     @operationStack = new OperationStack(this)
     @modeManager = new ModeManager(this)
 
-    @editorElement.addEventListener 'mouseup', @checkSelections.bind(this)
+    # @editorElement.addEventListener 'mouseup', @checkSelections.bind(this)
 
     if atom.commands.onDidDispatch?
       @subscriptions.add atom.commands.onDidDispatch ({target}) =>
         return unless (target is @editorElement)
         @checkSelections()
-        return unless settings.get('showCursorInVisualMode')
-        switch
-          when @isMode('visual', 'characterwise')
-            @showCursors(@editor.getCursors())
-          when @isMode('visual', 'blockwise')
-            cursors =
-              for s in @editor.getSelections() when swrap(s).get().blockwise?.head
-                s.cursor
-            @showCursors(cursors)
+        @updateCursorsVisibility()
 
     @addClass packageScope
     @init()

        if lastSelection.isEmpty()
          lastSelection.selectRight()

  showCursors: (cursors) ->
    for cursor in cursors
      cursor.setVisible(true) unless cursor.isVisible()
      @updateClassCond cursor.selection.isReversed(), 'reversed'

    return unless @editor?
    if @editor.getSelections().every((s) -> s.isEmpty())
      if @isMode('normal')
        # null
        @dontPutCursorsAtEndOfLine('checkSelections')
      else if @isMode('visual')
        @activate('normal')
    else
