         selection.setBufferRange(originalRange)
 
   selectBlockwise: ->
-    selections = @editor.getSelections()
-    for selection in selections
+    if @editor.getLastSelection().isEmpty()
+      @editor.selectRight()
+      return
+
+    for selection in @editor.getSelections()
       tail = selection.getTailBufferPosition()
       head = selection.getHeadBufferPosition()
       {start, end} = selection.getBufferRange()

      for row in selection.getBufferRowRange()
        selection.selectLine(row)

  # Private:
  selectCharacterwise: ->
    for selection in @editor.getSelections()
      {originalRange} = selection.marker.getProperties()
      if originalRange

      @activateNormalMode()
      return

    # [FIXME] comment out to evaluate necessity.
    # Since I can't understand why this is necessary.
    # unless @isVisualMode()
    #   @deactivateInsertMode()

    switch submode
      when 'linewise' then @selectLinewise()
      when 'characterwise' then @selectCharacterwise()
      when 'blockwise' then @selectBlockwise()
    @setMode('visual', submode)
    @updateStatusBar()

  selectLinewise: ->
    if @editor.getLastSelection().isEmpty()
      @editor.selectRight()
    # Keep original range as marker's property to restore column.
    for selection in @editor.getSelections()
      originalRange = selection.getBufferRange()
