     else
       @selectItemForRow(@findNormalItem(1, 'next'))
 
-    unless isActiveEditor(@editor)
-      row = @editor.getCursorBufferPosition().row
-      selectedItemRow = @getRowForSelectedItem()
-      if (row = @getRowForSelectedItem()) >= 0
-        @withLock => @editor.setCursorBufferPosition([row, 0])
+    @moveToSelectedItem() unless isActiveEditor(@editor)
+
+  moveToSelectedItem: ->
+    if (row = @getRowForSelectedItem()) >= 0
+      oldPosition = @editor.getCursorBufferPosition()
+      @withLock =>
+        @editor.setCursorBufferPosition([row, oldPosition.column])
+        if oldPosition.row is 0
+          @emitDidMoveToItemArea() # was at prompt
 
   setRowMarker: (editor, point) ->
     @rowMarker?.destroy()

  observeCursorPositionChange: ->
    @editor.onDidChangeCursorPosition (event) =>
      return if @isLocked()
      {oldBufferPosition, newBufferPosition, textChanged, cursor} = event
      return if textChanged or
        (not cursor.selection.isEmpty()) or

      oldRow = oldBufferPosition.row

      if newRow is 0 # was at Item area
        @moveToPrompt()
        return

      direction = if newRow > oldRow then 'next' else 'previous'

      row = @findNormalItem(newRow, direction)
      if row? # row might be '0'
        @selectItemForRow(row)
        if row is newRow
          @emitDidMoveToItemArea() if oldRow is 0
        else
          @moveToSelectedItem()
      else
        @moveToPrompt() if direction is 'previous'

      @preview() if @isAutoPreview()

