From 858ecf3e784f60404af458dc1fb85461334ffea8 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 28 Jun 2023 18:25:42 +0200 Subject: [PATCH] SearchEngine: Replace openEditor() with editorOpener() Change-Id: I45da343f4df3cf634c24bbb518703c856fbb4d90 Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Orgad Shaneh --- src/plugins/git/gitgrep.cpp | 28 ++++++++++--------- src/plugins/git/gitgrep.h | 3 +- .../findinfilessilversearcher.cpp | 6 ---- .../findinfilessilversearcher.h | 2 -- src/plugins/texteditor/basefilefind.cpp | 10 ++----- src/plugins/texteditor/basefilefind.h | 8 ++++-- 6 files changed, 25 insertions(+), 32 deletions(-) diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp index 8f404c8f380..b0bc3549776 100644 --- a/src/plugins/git/gitgrep.cpp +++ b/src/plugins/git/gitgrep.cpp @@ -269,20 +269,22 @@ QFuture GitGrep::executeSearch(const FileFindParameters ¶ return Utils::asyncRun(runGitGrep, parameters); } -IEditor *GitGrep::openEditor(const SearchResultItem &item, - const FileFindParameters ¶meters) +EditorOpener GitGrep::editorOpener() const { - const GitGrepParameters params = parameters.searchEngineParameters.value(); - const QStringList &itemPath = item.path(); - if (params.ref.isEmpty() || itemPath.isEmpty()) - return nullptr; - const FilePath path = FilePath::fromUserInput(itemPath.first()); - const FilePath topLevel = FilePath::fromString(parameters.additionalParameters.toString()); - IEditor *editor = m_client->openShowEditor(topLevel, params.ref, path, - GitClient::ShowEditor::OnlyIfDifferent); - if (editor) - editor->gotoLine(item.mainRange().begin.line, item.mainRange().begin.column); - return editor; + return [](const Utils::SearchResultItem &item, + const FileFindParameters ¶meters) -> IEditor * { + const GitGrepParameters params = parameters.searchEngineParameters.value(); + const QStringList &itemPath = item.path(); + if (params.ref.isEmpty() || itemPath.isEmpty()) + return nullptr; + const FilePath path = FilePath::fromUserInput(itemPath.first()); + const FilePath topLevel = FilePath::fromString(parameters.additionalParameters.toString()); + IEditor *editor = GitClient::instance()->openShowEditor( + topLevel, params.ref, path, GitClient::ShowEditor::OnlyIfDifferent); + if (editor) + editor->gotoLine(item.mainRange().begin.line, item.mainRange().begin.column); + return editor; + }; } } // Git::Internal diff --git a/src/plugins/git/gitgrep.h b/src/plugins/git/gitgrep.h index f2a4b812c5f..d4ef451d6ea 100644 --- a/src/plugins/git/gitgrep.h +++ b/src/plugins/git/gitgrep.h @@ -29,8 +29,7 @@ public: void writeSettings(QSettings *settings) const override; QFuture executeSearch( const TextEditor::FileFindParameters ¶meters) override; - Core::IEditor *openEditor(const Utils::SearchResultItem &item, - const TextEditor::FileFindParameters ¶meters) override; + TextEditor::EditorOpener editorOpener() const override; private: GitClient *m_client; diff --git a/src/plugins/silversearcher/findinfilessilversearcher.cpp b/src/plugins/silversearcher/findinfilessilversearcher.cpp index f607ae51498..61fe860a1db 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.cpp +++ b/src/plugins/silversearcher/findinfilessilversearcher.cpp @@ -170,12 +170,6 @@ QFuture FindInFilesSilverSearcher::executeSearch( return Utils::asyncRun(runSilverSeacher, parameters); } -IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/, - const FileFindParameters & /*parameters*/) -{ - return nullptr; -} - void FindInFilesSilverSearcher::readSettings(QSettings *settings) { m_searchOptionsLineEdit->setText(settings->value(s_searchOptionsString).toString()); diff --git a/src/plugins/silversearcher/findinfilessilversearcher.h b/src/plugins/silversearcher/findinfilessilversearcher.h index b70684f6ec8..dcb6873d18d 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.h +++ b/src/plugins/silversearcher/findinfilessilversearcher.h @@ -33,8 +33,6 @@ public: void writeSettings(QSettings *settings) const override; QFuture executeSearch( const TextEditor::FileFindParameters ¶meters) override; - Core::IEditor *openEditor(const Utils::SearchResultItem &item, - const TextEditor::FileFindParameters ¶meters) override; private: QPointer m_currentFindSupport; diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 23ef9c75d74..8d935494f43 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -151,11 +151,6 @@ public: parameters.flags, TextDocument::openedTextDocumentContents()); } - Core::IEditor *openEditor(const SearchResultItem &/*item*/, - const TextEditor::FileFindParameters &/*parameters*/) override - { - return nullptr; - } private: QWidget *m_widget; @@ -321,6 +316,7 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags, parameters.searchEngineParameters = currentSearchEngine()->parameters(); parameters.searchEngineIndex = d->m_currentSearchEngineIndex; parameters.fileContainerProvider = fileContainerProvider(); + parameters.editorOpener = currentSearchEngine()->editorOpener(); search->setUserData(QVariant::fromValue(parameters)); connect(search, &SearchResult::activated, this, [this, search](const SearchResultItem &item) { @@ -493,8 +489,8 @@ void BaseFileFind::readCommonSettings(QSettings *settings, const QString &defaul void BaseFileFind::openEditor(SearchResult *result, const SearchResultItem &item) { const FileFindParameters parameters = result->userData().value(); - IEditor *openedEditor = - d->m_searchEngines[parameters.searchEngineIndex]->openEditor(item, parameters); + IEditor *openedEditor = parameters.editorOpener ? parameters.editorOpener(item, parameters) + : nullptr; if (!openedEditor) EditorManager::openEditorAtSearchResult(item, Id(), EditorManager::DoNotSwitchToDesignMode); if (d->m_currentFindSupport) diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h index 95226730d6e..f52a9983d2c 100644 --- a/src/plugins/texteditor/basefilefind.h +++ b/src/plugins/texteditor/basefilefind.h @@ -27,7 +27,11 @@ class BaseFileFindPrivate; class SearchEnginePrivate; } // Internal +class FileFindParameters; + using FileContainerProvider = std::function; +using EditorOpener = std::function; class TEXTEDITOR_EXPORT FileFindParameters { @@ -40,6 +44,7 @@ public: int searchEngineIndex; Utils::FindFlags flags; FileContainerProvider fileContainerProvider = {}; + EditorOpener editorOpener = {}; }; using ProcessSetupHandler = std::function; @@ -69,8 +74,7 @@ public: virtual void writeSettings(QSettings *settings) const = 0; virtual QFuture executeSearch( const FileFindParameters ¶meters) = 0; - virtual Core::IEditor *openEditor(const Utils::SearchResultItem &item, - const FileFindParameters ¶meters) = 0; + virtual EditorOpener editorOpener() const { return {}; } bool isEnabled() const; void setEnabled(bool enabled);