 
   reverseSelections: ->
     reversed = not @editor.getLastSelection().isReversed()
+    @syncSelectionsReversedSate(reversed)
+
+  syncSelectionsReversedSate: (reversed) ->
     for selection in @editor.getSelections()
       selection.setBufferRange(selection.getBufferRange(), {reversed})
 

    @input = new Input(this)

    @editorElement.addEventListener 'mouseup', @checkSelections.bind(this)

    if atom.commands.onDidDispatch?
      @subscriptions.add atom.commands.onDidDispatch ({target}) =>
        if target is @editorElement
          @checkSelections()
        if @isVisualMode() and (@submode is 'characterwise') and settings.get('showCursorInVisualMode')
          @showCursor()

    @editorElement.classList.add("vim-mode")

      else if @isVisualMode()
        @activateNormalMode()
    else
      if @isNormalMode()
        @activateVisualMode('characterwise')
      else
        # When cursor is added selection is empty
        # using editor.onDidAddCursor not work since at the timing event callbacked,
        # cursor.selection is `undefined` and editor.getCursors().length isnt editor.getSelections().length
        # console.log "called!!"
        lastSelection = @editor.getLastSelection()
        if lastSelection.isEmpty()
          lastSelection.selectRight()

  dontPutCursorsAtEndOfLine: ->
    # if @editor.getPath()?.endsWith 'tryit.coffee'
