ClangGlobalSymbolFilter: Avoid custom prepareSearch() for aggregate

Delegate prepareSearch() directly to m_lspFilter aggregate
inside ClangGlobalSymbolFilter::prepareSearch().
This helps to keep filters' responsibilites more self-contained.

Disambiguate different overloads of
WorkspaceLocatorFilter::prepareSearch().

Change-Id: I98f25d01ad713a8c209a07bfd0d05b3ddcf16948
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Jarek Kobus
2023-03-14 18:30:49 +01:00
parent 4396820145
commit 6dc7bfb818
4 changed files with 38 additions and 18 deletions

View File

@@ -23,6 +23,7 @@
using namespace Core;
using namespace LanguageClient;
using namespace LanguageServerProtocol;
using namespace ProjectExplorer;
using namespace Utils;
namespace ClangCodeModel {
@@ -30,6 +31,17 @@ namespace Internal {
const int MaxResultCount = 10000;
static QList<Client *> clientsForOpenProjects()
{
QSet<Client *> clients;
const QList<Project *> projects = ProjectManager::projects();
for (Project *project : projects) {
if (Client *client = ClangModelManagerSupport::clientForProject(project))
clients << client;
}
return clients.values();
}
class CppLocatorFilter : public CppEditor::CppLocatorFilter
{
public:
@@ -56,6 +68,10 @@ public:
setHidden(true);
setMaxResultCount(MaxResultCount);
}
void prepareSearch(const QString &entry) override
{
prepareSearchForClients(entry, clientsForOpenProjects());
}
};
@@ -84,6 +100,10 @@ public:
setHidden(true);
setMaxResultCount(MaxResultCount);
}
void prepareSearch(const QString &entry) override
{
prepareSearchForClients(entry, clientsForOpenProjects());
}
};
class CppFunctionsFilter : public CppEditor::CppFunctionsFilter
@@ -112,6 +132,10 @@ public:
setHidden(true);
setMaxResultCount(MaxResultCount);
}
void prepareSearch(const QString &entry) override
{
prepareSearchForClients(entry, clientsForOpenProjects());
}
};
@@ -121,7 +145,7 @@ ClangGlobalSymbolFilter::ClangGlobalSymbolFilter()
}
ClangGlobalSymbolFilter::ClangGlobalSymbolFilter(ILocatorFilter *cppFilter,
WorkspaceLocatorFilter *lspFilter)
ILocatorFilter *lspFilter)
: m_cppFilter(cppFilter), m_lspFilter(lspFilter)
{
setId(CppEditor::Constants::LOCATOR_FILTER_ID);
@@ -139,13 +163,7 @@ ClangGlobalSymbolFilter::~ClangGlobalSymbolFilter()
void ClangGlobalSymbolFilter::prepareSearch(const QString &entry)
{
m_cppFilter->prepareSearch(entry);
QList<Client *> clients;
for (ProjectExplorer::Project * const project : ProjectExplorer::ProjectManager::projects()) {
if (Client * const client = ClangModelManagerSupport::clientForProject(project))
clients << client;
}
if (!clients.isEmpty())
m_lspFilter->prepareSearch(entry, clients);
m_lspFilter->prepareSearch(entry);
}
QList<LocatorFilterEntry> ClangGlobalSymbolFilter::matchesFor(

View File

@@ -15,7 +15,7 @@ class ClangGlobalSymbolFilter : public Core::ILocatorFilter
public:
ClangGlobalSymbolFilter();
ClangGlobalSymbolFilter(Core::ILocatorFilter *cppFilter,
LanguageClient::WorkspaceLocatorFilter *lspFilter);
Core::ILocatorFilter *lspFilter);
~ClangGlobalSymbolFilter() override;
private:
@@ -23,7 +23,7 @@ private:
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
const QString &entry) override;
Core::ILocatorFilter * const m_cppFilter;
LanguageClient::WorkspaceLocatorFilter * const m_lspFilter;
Core::ILocatorFilter * const m_lspFilter;
};
class ClangClassesFilter : public ClangGlobalSymbolFilter