fun runProofSearch()

in src/main/kotlin/org/arend/search/proof/ProofSearchUI.kt [483:528]


    fun runProofSearch(alreadyProcessed: Int, results: Sequence<ProofSearchEntry?>?) {
        EDT.assertIsEdt()
        cleanupCurrentResults(results == null)
        val settings = ProofSearchUISettings(project)

        runBackgroundableTask(ArendBundle.message("arend.proof.search.title"), myProject) { progressIndicator ->
            runWithLoadingIcon {
                this.progressIndicator = progressIndicator
                val elements = results ?: generateProofSearchResults(project, searchPattern)
                var counter = PROOF_SEARCH_RESULT_LIMIT
                for (element in elements) {
                    if (progressIndicator.isCanceled) {
                        return@runWithLoadingIcon "Search cancelled"
                    }
                    if (element == null) {
                        continue
                    }
                    invokeLater {
                        if (progressIndicator.isCanceled) {
                            return@invokeLater
                        }
                        model.add(DefElement(element))
                        if (results != null && counter == PROOF_SEARCH_RESULT_LIMIT && myResultsList.selectedIndex == -1) {
                            myResultsList.selectedIndex = myResultsList.itemsCount - 1
                        }
                    }
                    --counter
                    if (settings.shouldLimitSearch() && counter == 0) {
                        invokeLater {
                            if (progressIndicator.isCanceled) {
                                return@invokeLater
                            }
                            model.add(
                                MoreElement(
                                    alreadyProcessed + PROOF_SEARCH_RESULT_LIMIT,
                                    elements.drop(PROOF_SEARCH_RESULT_LIMIT)
                                )
                            )
                        }
                        return@runWithLoadingIcon "Showing first ${alreadyProcessed + PROOF_SEARCH_RESULT_LIMIT} results"
                    }
                }
                "Search completed with ${model.items.size} results"
            }
        }
    }