     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()


  # vim-mode-plus integration
  autoChangeModeForVimState: (vimState) ->
    @disposables.add @onDidMoveToPrompt -> vimState.activate('insert') unless vimState.isMode('insert')
    @disposables.add @onDidMoveToItemArea -> vimState.activate('normal') if vimState.isMode('insert')

  observeCursorPositionChange: ->
    @editor.onDidChangeCursorPosition (event) =>
      return if @isLocked()

      {oldBufferPosition, newBufferPosition, textChanged, cursor} = event
      return if textChanged or
        (not cursor.selection.isEmpty()) or
