       when 'blockwise'
         @vimState.selectBlockwise()
 
+  # return status
   selectByMotion: (selection) ->
     selection.modifySelection =>
       @moveWithSaveJump(selection.cursor)
-    @moveSucceeded ? not selection.isEmpty()
+    return @moveSucceeded ? not selection.isEmpty()
 
   setCursorBuffeRow: (cursor, row, options) ->
     if @isVerticalMotion() and @getConfig('moveToFirstCharacterOnVerticalMotion')

  select: ->
    for selection in @editor.getSelections()
      succeeded = @selectByMotion(selection)
      if (succeeded or @isMode('visual') or @is('CurrentSelection')) and
          (@isInclusive() or @isLinewise()) and
          @wise isnt 'blockwise'

        swrap(selection).translateSelectionEndAndClip('forward')

    @editor.mergeCursors()

  constructor: ->
    super

    # visual mode can overwrite default wise
    if @vimState.mode is 'visual'
      @inclusive = true
      @wise = @vimState.submode
