diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp index 56ff5bd098e..3ecf90b7ac7 100644 --- a/src/plugins/git/gitgrep.cpp +++ b/src/plugins/git/gitgrep.cpp @@ -265,9 +265,11 @@ void GitGrep::writeSettings(QSettings *settings) const settings->setValue(GitGrepRef, m_treeLineEdit->text()); } -QFuture GitGrep::executeSearch(const FileFindParameters ¶meters) +SearchExecutor GitGrep::searchExecutor() const { - return Utils::asyncRun(runGitGrep, parameters); + return [](const FileFindParameters ¶meters) { + return Utils::asyncRun(runGitGrep, parameters); + }; } EditorOpener GitGrep::editorOpener() const diff --git a/src/plugins/git/gitgrep.h b/src/plugins/git/gitgrep.h index 1c905f3667d..6539a5adc4d 100644 --- a/src/plugins/git/gitgrep.h +++ b/src/plugins/git/gitgrep.h @@ -28,8 +28,7 @@ public: QVariant parameters() const override; void readSettings(QSettings *settings) override; void writeSettings(QSettings *settings) const override; - QFuture executeSearch( - const TextEditor::FileFindParameters ¶meters) override; + TextEditor::SearchExecutor searchExecutor() const override; TextEditor::EditorOpener editorOpener() const override; private: diff --git a/src/plugins/silversearcher/findinfilessilversearcher.cpp b/src/plugins/silversearcher/findinfilessilversearcher.cpp index 61fe860a1db..5782ece0333 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.cpp +++ b/src/plugins/silversearcher/findinfilessilversearcher.cpp @@ -164,10 +164,11 @@ void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const settings->setValue(s_searchOptionsString, m_searchOptionsLineEdit->text()); } -QFuture FindInFilesSilverSearcher::executeSearch( - const FileFindParameters ¶meters) +SearchExecutor FindInFilesSilverSearcher::searchExecutor() const { - return Utils::asyncRun(runSilverSeacher, parameters); + return [](const FileFindParameters ¶meters) { + return Utils::asyncRun(runSilverSeacher, parameters); + }; } void FindInFilesSilverSearcher::readSettings(QSettings *settings) diff --git a/src/plugins/silversearcher/findinfilessilversearcher.h b/src/plugins/silversearcher/findinfilessilversearcher.h index dcb6873d18d..2905794e56d 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.h +++ b/src/plugins/silversearcher/findinfilessilversearcher.h @@ -31,8 +31,7 @@ public: QVariant parameters() const override; void readSettings(QSettings *settings) override; void writeSettings(QSettings *settings) const override; - QFuture executeSearch( - const TextEditor::FileFindParameters ¶meters) override; + TextEditor::SearchExecutor searchExecutor() const override; private: QPointer m_currentFindSupport; diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 8d935494f43..c44c78f0768 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -145,11 +145,12 @@ public: QVariant parameters() const override { return {}; } void readSettings(QSettings * /*settings*/) override {} void writeSettings(QSettings * /*settings*/) const override {} - QFuture executeSearch(const FileFindParameters ¶meters) override + SearchExecutor searchExecutor() const override { - return Utils::findInFiles(parameters.text, parameters.fileContainerProvider(), - parameters.flags, TextDocument::openedTextDocumentContents()); - + return [](const FileFindParameters ¶meters) { + return Utils::findInFiles(parameters.text, parameters.fileContainerProvider(), + parameters.flags, TextDocument::openedTextDocumentContents()); + }; } private: @@ -307,16 +308,18 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags, setupSearch(search); search->setTextToReplace(txt); search->setSearchAgainSupported(true); + SearchEngine *searchEngine = currentSearchEngine(); FileFindParameters parameters; parameters.text = txt; parameters.flags = findFlags; parameters.nameFilters = fileNameFilters(); parameters.exclusionFilters = fileExclusionFilters(); parameters.additionalParameters = additionalParameters(); - parameters.searchEngineParameters = currentSearchEngine()->parameters(); + parameters.searchEngineParameters = searchEngine->parameters(); parameters.searchEngineIndex = d->m_currentSearchEngineIndex; parameters.fileContainerProvider = fileContainerProvider(); - parameters.editorOpener = currentSearchEngine()->editorOpener(); + parameters.editorOpener = searchEngine->editorOpener(); + parameters.searchExecutor = searchEngine->searchExecutor(); search->setUserData(QVariant::fromValue(parameters)); connect(search, &SearchResult::activated, this, [this, search](const SearchResultItem &item) { @@ -594,7 +597,7 @@ FilePaths BaseFileFind::replaceAll(const QString &text, const SearchResultItems QFuture BaseFileFind::executeSearch(const FileFindParameters ¶meters) { - return d->m_searchEngines[parameters.searchEngineIndex]->executeSearch(parameters); + return parameters.searchExecutor(parameters); } namespace Internal { diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h index f52a9983d2c..2d00e2e6279 100644 --- a/src/plugins/texteditor/basefilefind.h +++ b/src/plugins/texteditor/basefilefind.h @@ -32,6 +32,7 @@ class FileFindParameters; using FileContainerProvider = std::function; using EditorOpener = std::function; +using SearchExecutor = std::function(const FileFindParameters &)>; class TEXTEDITOR_EXPORT FileFindParameters { @@ -45,6 +46,7 @@ public: Utils::FindFlags flags; FileContainerProvider fileContainerProvider = {}; EditorOpener editorOpener = {}; + SearchExecutor searchExecutor = {}; }; using ProcessSetupHandler = std::function; @@ -72,8 +74,7 @@ public: virtual QVariant parameters() const = 0; virtual void readSettings(QSettings *settings) = 0; virtual void writeSettings(QSettings *settings) const = 0; - virtual QFuture executeSearch( - const FileFindParameters ¶meters) = 0; + virtual SearchExecutor searchExecutor() const = 0; virtual EditorOpener editorOpener() const { return {}; } bool isEnabled() const; void setEnabled(bool enabled);