     @items.filter (item) ->
       (not item.skip) and (item.filePath is filePath)
 
+  # When filePath is undefined, it OK cause, `undefined` is `undefined`
+  findItem: ({point, filePath}={}) ->
+    for item in @getNormalItems()
+      if item.point.isEqual(point) and item.filePath is filePath
+        return item
+
   updateProviderPanel: (states) ->
     @providerPanel.updateStateElements(states)
+
+  selectFirstNormalItem: ->
+    @selectItemForRow(@findRowForNormalItem(0, 'next'))
 
   selectItemForRow: (row) ->
     item = @items[row]

            selection.destroy()
          @withIgnoreChange => @insertQuery(@lastQuery) # Recover query
        else
          @refresh().then =>
            if @autoPreviewOnQueryChange and @isActive()
              if @provider.boundToEditor
                @preview()


  syncToEditor: (editor) ->
    return if @preventSyncToEditor
    return if @isActive()
    if item = @findClosestItemForEditor(editor)
      @selectItem(item)
      {row} = @editor.getCursorBufferPosition()
      @moveToSelectedItem(scrollToColumnZero: true)
      @emitDidMoveToItemArea() if @isPromptRow(row)

  moveToSelectedItem: ({scrollToColumnZero, ignoreCursorMove}={}) ->
    if (row = @getRowForSelectedItem()) >= 0
