   removeResult: ({filePath}) =>
     @getResultView(filePath)?.remove()
 
-  renderResults: ({renderAll}={}) ->
-    return unless renderAll or @shouldRenderMoreResults()
+  renderResults: ({renderAll, renderNext}={}) ->
+    return unless renderAll or renderNext or @shouldRenderMoreResults()
+
+    initialIndex = @lastRenderedResultIndex
 
     paths = @model.getPaths()
     for filePath in paths[@lastRenderedResultIndex..]
       result = @model.getResult(filePath)
-      break if not renderAll and not @shouldRenderMoreResults()
+      if not renderAll and not renderNext and not @shouldRenderMoreResults()
+        break
+      else if renderNext is @lastRenderedResultIndex - @lastRenderedResultIndex
+        break
       resultView = new ResultView(@model, filePath, result)
       @append(resultView)
       @lastRenderedResultIndex++

        @selectPreviousResult()
      'core:move-left': => @collapseResult()
      'core:move-right': => @expandResult()
      'core:move-to-top': =>
        @selectFirstResult()
      'core:move-to-bottom': =>

    @prop('scrollHeight') <= @height() + @pixelOverdraw or @prop('scrollHeight') <= @scrollBottom() + @pixelOverdraw

  selectFirstResult: ->
    @selectResult(@find('.search-result:first'))
    @scrollToTop()

  selectLastResult: ->
    @selectResult(@find('.search-result:last'))
    @scrollToBottom()

  selectPreviousPage: ->
    selectedView = @find('.selected').view()
    return @selectFirstResult() unless selectedView

    itemHeight = selectedView.outerHeight()
    pageHeight = @innerHeight()
    resultsPerPage = Math.round(pageHeight / itemHeight)
    pageHeight = resultsPerPage * itemHeight # so it's divisible by the number of items

    visibleItems = @find('li:visible')
    index = visibleItems.index(selectedView)

    previousIndex = Math.max(index - resultsPerPage , 0)
    previousView = $(visibleItems[previousIndex])

    @selectResult(previousView)
    @scrollTop(@scrollTop() - pageHeight)
    @scrollTo(previousView) # just in case the scrolltop misses the mark

  selectNextPage: ->
    selectedView = @find('.selected').view()
    return @selectFirstResult() unless selectedView

    itemHeight = selectedView.outerHeight()
    pageHeight = @innerHeight()
    resultsPerPage = Math.round(pageHeight / itemHeight)
    pageHeight = resultsPerPage * itemHeight # so it's divisible by the number of items

    @renderResults(renderNext: resultsPerPage + 1)

    visibleItems = @find('li:visible')
    index = visibleItems.index(selectedView)

    nextIndex = Math.min(index + resultsPerPage, visibleItems.length - 1)
    nextView = $(visibleItems[nextIndex])

    @selectResult(nextView)
    @scrollTop(@scrollTop() + pageHeight)
    @scrollTo(nextView) # just in case the scrolltop misses the mark

  selectNextResult: ->
    selectedView = @find('.selected').view()
