diff options
-rw-r--r-- | src/plugins/git/gitgrep.cpp | 3 | ||||
-rw-r--r-- | src/plugins/git/gitgrep.h | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/allprojectsfind.cpp | 11 | ||||
-rw-r--r-- | src/plugins/projectexplorer/allprojectsfind.h | 10 | ||||
-rw-r--r-- | src/plugins/projectexplorer/currentprojectfind.cpp | 28 | ||||
-rw-r--r-- | src/plugins/projectexplorer/currentprojectfind.h | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/filesinallprojectsfind.cpp | 18 | ||||
-rw-r--r-- | src/plugins/projectexplorer/filesinallprojectsfind.h | 4 | ||||
-rw-r--r-- | src/plugins/silversearcher/findinfilessilversearcher.cpp | 2 | ||||
-rw-r--r-- | src/plugins/silversearcher/findinfilessilversearcher.h | 2 | ||||
-rw-r--r-- | src/plugins/texteditor/basefilefind.cpp | 14 | ||||
-rw-r--r-- | src/plugins/texteditor/basefilefind.h | 9 | ||||
-rw-r--r-- | src/plugins/texteditor/findincurrentfile.cpp | 19 | ||||
-rw-r--r-- | src/plugins/texteditor/findincurrentfile.h | 4 | ||||
-rw-r--r-- | src/plugins/texteditor/findinfiles.cpp | 11 | ||||
-rw-r--r-- | src/plugins/texteditor/findinfiles.h | 4 | ||||
-rw-r--r-- | src/plugins/texteditor/findinopenfiles.cpp | 39 | ||||
-rw-r--r-- | src/plugins/texteditor/findinopenfiles.h | 4 |
18 files changed, 85 insertions, 104 deletions
diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp index f6324f152d..8f404c8f38 100644 --- a/src/plugins/git/gitgrep.cpp +++ b/src/plugins/git/gitgrep.cpp @@ -264,8 +264,7 @@ void GitGrep::writeSettings(QSettings *settings) const settings->setValue(GitGrepRef, m_treeLineEdit->text()); } -QFuture<SearchResultItems> GitGrep::executeSearch(const FileFindParameters ¶meters, - BaseFileFind *) +QFuture<SearchResultItems> GitGrep::executeSearch(const FileFindParameters ¶meters) { return Utils::asyncRun(runGitGrep, parameters); } diff --git a/src/plugins/git/gitgrep.h b/src/plugins/git/gitgrep.h index fda6fe56eb..f2a4b812c5 100644 --- a/src/plugins/git/gitgrep.h +++ b/src/plugins/git/gitgrep.h @@ -28,8 +28,7 @@ public: void readSettings(QSettings *settings) override; void writeSettings(QSettings *settings) const override; QFuture<Utils::SearchResultItems> executeSearch( - const TextEditor::FileFindParameters ¶meters, - TextEditor::BaseFileFind *baseFileFind) override; + const TextEditor::FileFindParameters ¶meters) override; Core::IEditor *openEditor(const Utils::SearchResultItem &item, const TextEditor::FileFindParameters ¶meters) override; diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp index 53bc13cfef..c9fdcb1122 100644 --- a/src/plugins/projectexplorer/allprojectsfind.cpp +++ b/src/plugins/projectexplorer/allprojectsfind.cpp @@ -47,17 +47,16 @@ bool AllProjectsFind::isEnabled() const return BaseFileFind::isEnabled() && ProjectManager::hasProjects(); } -FileContainer AllProjectsFind::files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const +FileContainerProvider AllProjectsFind::fileContainerProvider() const { - Q_UNUSED(additionalParameters) - return filesForProjects(nameFilters, exclusionFilters, ProjectManager::projects()); + return [nameFilters = fileNameFilters(), exclusionFilters = fileExclusionFilters()] { + return filesForProjects(nameFilters, exclusionFilters, ProjectManager::projects()); + }; } FileContainer AllProjectsFind::filesForProjects(const QStringList &nameFilters, const QStringList &exclusionFilters, - const QList<Project *> &projects) const + const QList<Project *> &projects) { std::function<FilePaths(const FilePaths &)> filterFiles = Utils::filterFilesFunction(nameFilters, exclusionFilters); diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h index 4752d8d28a..c4d70e1a1c 100644 --- a/src/plugins/projectexplorer/allprojectsfind.h +++ b/src/plugins/projectexplorer/allprojectsfind.h @@ -30,18 +30,16 @@ public: void readSettings(QSettings *settings) override; protected: - Utils::FileContainer files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const override; - Utils::FileContainer filesForProjects(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QList<Project *> &projects) const; + static Utils::FileContainer filesForProjects(const QStringList &nameFilters, + const QStringList &exclusionFilters, + const QList<Project *> &projects); QVariant additionalParameters() const override; QString label() const override; QString toolTip() const override; private: + TextEditor::FileContainerProvider fileContainerProvider() const override; void handleFileListChanged(); QPointer<QWidget> m_configWidget; diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index 942a1dc6e7..7bd8bd332c 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -57,17 +57,22 @@ QVariant CurrentProjectFind::additionalParameters() const return QVariant(); } -FileContainer CurrentProjectFind::files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const +static FilePath currentProjectFilePath() { - QTC_ASSERT(additionalParameters.isValid(), return {}); - const FilePath projectFile = FilePath::fromVariant(additionalParameters); - for (Project *project : ProjectManager::projects()) { - if (project && projectFile == project->projectFilePath()) - return filesForProjects(nameFilters, exclusionFilters, {project}); - } - return {}; + Project *project = ProjectTree::currentProject(); + return project ? project->projectFilePath() : FilePath(); +} + +FileContainerProvider CurrentProjectFind::fileContainerProvider() const +{ + return [nameFilters = fileNameFilters(), exclusionFilters = fileExclusionFilters(), + projectFile = currentProjectFilePath()] { + for (Project *project : ProjectManager::projects()) { + if (project && projectFile == project->projectFilePath()) + return filesForProjects(nameFilters, exclusionFilters, {project}); + } + return FileContainer(); + }; } QString CurrentProjectFind::label() const @@ -85,8 +90,7 @@ void CurrentProjectFind::handleProjectChanged() void CurrentProjectFind::setupSearch(Core::SearchResult *search) { - Project *project = ProjectTree::currentProject(); - const FilePath projectFile = project ? project->projectFilePath() : FilePath(); + const FilePath projectFile = currentProjectFilePath(); connect(this, &IFindFilter::enabledChanged, search, [search, projectFile] { const QList<Project *> projects = ProjectManager::projects(); for (Project *project : projects) { diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h index a2589bf2b9..4ac5e4eeb3 100644 --- a/src/plugins/projectexplorer/currentprojectfind.h +++ b/src/plugins/projectexplorer/currentprojectfind.h @@ -27,13 +27,11 @@ public: void readSettings(QSettings *settings) override; protected: - Utils::FileContainer files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const override; QVariant additionalParameters() const override; QString label() const override; private: + TextEditor::FileContainerProvider fileContainerProvider() const override; void handleProjectChanged(); void setupSearch(Core::SearchResult *search) override; }; diff --git a/src/plugins/projectexplorer/filesinallprojectsfind.cpp b/src/plugins/projectexplorer/filesinallprojectsfind.cpp index 554b072f7b..5b8e6eaa68 100644 --- a/src/plugins/projectexplorer/filesinallprojectsfind.cpp +++ b/src/plugins/projectexplorer/filesinallprojectsfind.cpp @@ -13,6 +13,7 @@ #include <QSettings> +using namespace TextEditor; using namespace Utils; namespace ProjectExplorer { @@ -47,16 +48,15 @@ void FilesInAllProjectsFind::readSettings(QSettings *settings) settings->endGroup(); } -FileContainer FilesInAllProjectsFind::files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const +FileContainerProvider FilesInAllProjectsFind::fileContainerProvider() const { - Q_UNUSED(additionalParameters) - const QSet<FilePath> dirs = Utils::transform<QSet>(ProjectManager::projects(), [](Project *p) { - return p->projectFilePath().parentDir(); - }); - return SubDirFileContainer(FilePaths(dirs.constBegin(), dirs.constEnd()), nameFilters, - exclusionFilters, Core::EditorManager::defaultTextCodec()); + return [nameFilters = fileNameFilters(), exclusionFilters = fileExclusionFilters()] { + const QSet<FilePath> dirs = Utils::transform<QSet>(ProjectManager::projects(), [](Project *p) { + return p->projectFilePath().parentDir(); + }); + return SubDirFileContainer(FilePaths(dirs.constBegin(), dirs.constEnd()), nameFilters, + exclusionFilters, Core::EditorManager::defaultTextCodec()); + }; } QString FilesInAllProjectsFind::label() const diff --git a/src/plugins/projectexplorer/filesinallprojectsfind.h b/src/plugins/projectexplorer/filesinallprojectsfind.h index ad09ff031d..1e27b06a30 100644 --- a/src/plugins/projectexplorer/filesinallprojectsfind.h +++ b/src/plugins/projectexplorer/filesinallprojectsfind.h @@ -20,9 +20,7 @@ public: void readSettings(QSettings *settings) override; protected: - Utils::FileContainer files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const override; + TextEditor::FileContainerProvider fileContainerProvider() const override; QString label() const override; }; diff --git a/src/plugins/silversearcher/findinfilessilversearcher.cpp b/src/plugins/silversearcher/findinfilessilversearcher.cpp index 6cf428bb64..f607ae5149 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.cpp +++ b/src/plugins/silversearcher/findinfilessilversearcher.cpp @@ -165,7 +165,7 @@ void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const } QFuture<SearchResultItems> FindInFilesSilverSearcher::executeSearch( - const FileFindParameters ¶meters, BaseFileFind * /*baseFileFind*/) + const FileFindParameters ¶meters) { return Utils::asyncRun(runSilverSeacher, parameters); } diff --git a/src/plugins/silversearcher/findinfilessilversearcher.h b/src/plugins/silversearcher/findinfilessilversearcher.h index bc5e224c21..b70684f6ec 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.h +++ b/src/plugins/silversearcher/findinfilessilversearcher.h @@ -32,7 +32,7 @@ public: void readSettings(QSettings *settings) override; void writeSettings(QSettings *settings) const override; QFuture<Utils::SearchResultItems> executeSearch( - const TextEditor::FileFindParameters ¶meters, TextEditor::BaseFileFind *) override; + const TextEditor::FileFindParameters ¶meters) override; Core::IEditor *openEditor(const Utils::SearchResultItem &item, const TextEditor::FileFindParameters ¶meters) override; diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index efec770872..23ef9c75d7 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -145,14 +145,10 @@ public: QVariant parameters() const override { return {}; } void readSettings(QSettings * /*settings*/) override {} void writeSettings(QSettings * /*settings*/) const override {} - QFuture<SearchResultItems> executeSearch(const TextEditor::FileFindParameters ¶meters, - BaseFileFind *baseFileFind) override + QFuture<SearchResultItems> executeSearch(const FileFindParameters ¶meters) override { - const FileContainer container = baseFileFind->files(parameters.nameFilters, - parameters.exclusionFilters, - parameters.additionalParameters); - return Utils::findInFiles(parameters.text, container, parameters.flags, - TextDocument::openedTextDocumentContents()); + return Utils::findInFiles(parameters.text, parameters.fileContainerProvider(), + parameters.flags, TextDocument::openedTextDocumentContents()); } Core::IEditor *openEditor(const SearchResultItem &/*item*/, @@ -324,6 +320,8 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags, parameters.additionalParameters = additionalParameters(); parameters.searchEngineParameters = currentSearchEngine()->parameters(); parameters.searchEngineIndex = d->m_currentSearchEngineIndex; + parameters.fileContainerProvider = fileContainerProvider(); + search->setUserData(QVariant::fromValue(parameters)); connect(search, &SearchResult::activated, this, [this, search](const SearchResultItem &item) { openEditor(search, item); @@ -600,7 +598,7 @@ FilePaths BaseFileFind::replaceAll(const QString &text, const SearchResultItems QFuture<SearchResultItems> BaseFileFind::executeSearch(const FileFindParameters ¶meters) { - return d->m_searchEngines[parameters.searchEngineIndex]->executeSearch(parameters, this); + return d->m_searchEngines[parameters.searchEngineIndex]->executeSearch(parameters); } namespace Internal { diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h index c92b857b57..95226730d6 100644 --- a/src/plugins/texteditor/basefilefind.h +++ b/src/plugins/texteditor/basefilefind.h @@ -27,6 +27,8 @@ class BaseFileFindPrivate; class SearchEnginePrivate; } // Internal +using FileContainerProvider = std::function<Utils::FileContainer()>; + class TEXTEDITOR_EXPORT FileFindParameters { public: @@ -37,6 +39,7 @@ public: QVariant searchEngineParameters; int searchEngineIndex; Utils::FindFlags flags; + FileContainerProvider fileContainerProvider = {}; }; using ProcessSetupHandler = std::function<void(Utils::Process &)>; @@ -65,7 +68,7 @@ public: virtual void readSettings(QSettings *settings) = 0; virtual void writeSettings(QSettings *settings) const = 0; virtual QFuture<Utils::SearchResultItems> executeSearch( - const FileFindParameters ¶meters, BaseFileFind *baseFileFind) = 0; + const FileFindParameters ¶meters) = 0; virtual Core::IEditor *openEditor(const Utils::SearchResultItem &item, const FileFindParameters ¶meters) = 0; bool isEnabled() const; @@ -95,9 +98,6 @@ public: /* returns the list of unique files that were passed in items */ static Utils::FilePaths replaceAll(const QString &txt, const Utils::SearchResultItems &items, bool preserveCase = false); - virtual Utils::FileContainer files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const = 0; protected: virtual QVariant additionalParameters() const = 0; @@ -121,6 +121,7 @@ signals: void currentSearchEngineChanged(); private: + virtual FileContainerProvider fileContainerProvider() const = 0; void openEditor(Core::SearchResult *result, const Utils::SearchResultItem &item); void doReplace(const QString &txt, const Utils::SearchResultItems &items, bool preserveCase); void hideHighlightAll(bool visible); diff --git a/src/plugins/texteditor/findincurrentfile.cpp b/src/plugins/texteditor/findincurrentfile.cpp index ce471c1c12..197d02f53e 100644 --- a/src/plugins/texteditor/findincurrentfile.cpp +++ b/src/plugins/texteditor/findincurrentfile.cpp @@ -36,18 +36,15 @@ QString FindInCurrentFile::displayName() const return Tr::tr("Current File"); } -FileContainer FindInCurrentFile::files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const +FileContainerProvider FindInCurrentFile::fileContainerProvider() const { - Q_UNUSED(nameFilters) - Q_UNUSED(exclusionFilters) - const auto fileName = FilePath::fromVariant(additionalParameters); - QMap<FilePath, QTextCodec *> openEditorEncodings = TextDocument::openedTextDocumentEncodings(); - QTextCodec *codec = openEditorEncodings.value(fileName); - if (!codec) - codec = Core::EditorManager::defaultTextCodec(); - return FileListContainer({fileName}, {codec}); + return [fileName = m_currentDocument->filePath()] { + const QMap<FilePath, QTextCodec *> encodings = TextDocument::openedTextDocumentEncodings(); + QTextCodec *codec = encodings.value(fileName); + if (!codec) + codec = Core::EditorManager::defaultTextCodec(); + return FileListContainer({fileName}, {codec}); + }; } QVariant FindInCurrentFile::additionalParameters() const diff --git a/src/plugins/texteditor/findincurrentfile.h b/src/plugins/texteditor/findincurrentfile.h index c5f07eb8b9..5eb75de05b 100644 --- a/src/plugins/texteditor/findincurrentfile.h +++ b/src/plugins/texteditor/findincurrentfile.h @@ -29,14 +29,12 @@ public: void readSettings(QSettings *settings) override; protected: - Utils::FileContainer files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const override; QVariant additionalParameters() const override; QString label() const override; QString toolTip() const override; private: + FileContainerProvider fileContainerProvider() const override; void handleFileChange(Core::IEditor *editor); QPointer<Core::IDocument> m_currentDocument; diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index 908e53d875..3f073f8229 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -58,12 +58,13 @@ QString FindInFiles::displayName() const return Tr::tr("Files in File System"); } -FileContainer FindInFiles::files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const +FileContainerProvider FindInFiles::fileContainerProvider() const { - return SubDirFileContainer({FilePath::fromVariant(additionalParameters)}, nameFilters, - exclusionFilters, EditorManager::defaultTextCodec()); + return [nameFilters = fileNameFilters(), exclusionFilters = fileExclusionFilters(), + filePath = path()] { + return SubDirFileContainer({filePath}, nameFilters, exclusionFilters, + EditorManager::defaultTextCodec()); + }; } QVariant FindInFiles::additionalParameters() const diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h index c7e923b950..3713ab0b1d 100644 --- a/src/plugins/texteditor/findinfiles.h +++ b/src/plugins/texteditor/findinfiles.h @@ -44,15 +44,13 @@ signals: void pathChanged(const Utils::FilePath &directory); protected: - Utils::FileContainer files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const override; QVariant additionalParameters() const override; QString label() const override; QString toolTip() const override; void syncSearchEngineCombo(int selectedSearchEngineIndex) override; private: + FileContainerProvider fileContainerProvider() const override; void setValid(bool valid); void searchEnginesSelectionChanged(int index); Utils::FilePath path() const; diff --git a/src/plugins/texteditor/findinopenfiles.cpp b/src/plugins/texteditor/findinopenfiles.cpp index 6bfdd1b04e..6b3e7dbe9c 100644 --- a/src/plugins/texteditor/findinopenfiles.cpp +++ b/src/plugins/texteditor/findinopenfiles.cpp @@ -36,30 +36,25 @@ QString FindInOpenFiles::displayName() const return Tr::tr("Open Documents"); } -FileContainer FindInOpenFiles::files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const +FileContainerProvider FindInOpenFiles::fileContainerProvider() const { - Q_UNUSED(nameFilters) - Q_UNUSED(exclusionFilters) - Q_UNUSED(additionalParameters) - QMap<FilePath, QTextCodec *> openEditorEncodings - = TextDocument::openedTextDocumentEncodings(); - FilePaths fileNames; - QList<QTextCodec *> codecs; - const QList<Core::DocumentModel::Entry *> entries = Core::DocumentModel::entries(); - for (Core::DocumentModel::Entry *entry : entries) { - const FilePath fileName = entry->filePath(); - if (!fileName.isEmpty()) { - fileNames.append(fileName); - QTextCodec *codec = openEditorEncodings.value(fileName); - if (!codec) - codec = Core::EditorManager::defaultTextCodec(); - codecs.append(codec); + return [] { + const QMap<FilePath, QTextCodec *> encodings = TextDocument::openedTextDocumentEncodings(); + FilePaths fileNames; + QList<QTextCodec *> codecs; + const QList<Core::DocumentModel::Entry *> entries = Core::DocumentModel::entries(); + for (Core::DocumentModel::Entry *entry : entries) { + const FilePath fileName = entry->filePath(); + if (!fileName.isEmpty()) { + fileNames.append(fileName); + QTextCodec *codec = encodings.value(fileName); + if (!codec) + codec = Core::EditorManager::defaultTextCodec(); + codecs.append(codec); + } } - } - - return FileListContainer(fileNames, codecs); + return FileListContainer(fileNames, codecs); + }; } QVariant FindInOpenFiles::additionalParameters() const diff --git a/src/plugins/texteditor/findinopenfiles.h b/src/plugins/texteditor/findinopenfiles.h index 3431331b5b..a96cd4f061 100644 --- a/src/plugins/texteditor/findinopenfiles.h +++ b/src/plugins/texteditor/findinopenfiles.h @@ -22,14 +22,12 @@ public: void readSettings(QSettings *settings) override; protected: - Utils::FileContainer files(const QStringList &nameFilters, - const QStringList &exclusionFilters, - const QVariant &additionalParameters) const override; QVariant additionalParameters() const override; QString label() const override; QString toolTip() const override; private: + FileContainerProvider fileContainerProvider() const override; void updateEnabledState(); }; |