aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/git/gitgrep.cpp3
-rw-r--r--src/plugins/git/gitgrep.h3
-rw-r--r--src/plugins/projectexplorer/allprojectsfind.cpp11
-rw-r--r--src/plugins/projectexplorer/allprojectsfind.h10
-rw-r--r--src/plugins/projectexplorer/currentprojectfind.cpp28
-rw-r--r--src/plugins/projectexplorer/currentprojectfind.h4
-rw-r--r--src/plugins/projectexplorer/filesinallprojectsfind.cpp18
-rw-r--r--src/plugins/projectexplorer/filesinallprojectsfind.h4
-rw-r--r--src/plugins/silversearcher/findinfilessilversearcher.cpp2
-rw-r--r--src/plugins/silversearcher/findinfilessilversearcher.h2
-rw-r--r--src/plugins/texteditor/basefilefind.cpp14
-rw-r--r--src/plugins/texteditor/basefilefind.h9
-rw-r--r--src/plugins/texteditor/findincurrentfile.cpp19
-rw-r--r--src/plugins/texteditor/findincurrentfile.h4
-rw-r--r--src/plugins/texteditor/findinfiles.cpp11
-rw-r--r--src/plugins/texteditor/findinfiles.h4
-rw-r--r--src/plugins/texteditor/findinopenfiles.cpp39
-rw-r--r--src/plugins/texteditor/findinopenfiles.h4
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 &parameters,
- BaseFileFind *)
+QFuture<SearchResultItems> GitGrep::executeSearch(const FileFindParameters &parameters)
{
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 &parameters,
- TextEditor::BaseFileFind *baseFileFind) override;
+ const TextEditor::FileFindParameters &parameters) override;
Core::IEditor *openEditor(const Utils::SearchResultItem &item,
const TextEditor::FileFindParameters &parameters) 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 &parameters, BaseFileFind * /*baseFileFind*/)
+ const FileFindParameters &parameters)
{
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 &parameters, TextEditor::BaseFileFind *) override;
+ const TextEditor::FileFindParameters &parameters) override;
Core::IEditor *openEditor(const Utils::SearchResultItem &item,
const TextEditor::FileFindParameters &parameters) 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 &parameters,
- BaseFileFind *baseFileFind) override
+ QFuture<SearchResultItems> executeSearch(const FileFindParameters &parameters) 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 &parameters)
{
- 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 &parameters, BaseFileFind *baseFileFind) = 0;
+ const FileFindParameters &parameters) = 0;
virtual Core::IEditor *openEditor(const Utils::SearchResultItem &item,
const FileFindParameters &parameters) = 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();
};