LocatorFilterEntry: Get rid of filter field

Remove also c'tor taking a pointer to filter.

Change-Id: Ic0fe62daeb6e79a729bee24d07d7eb77559e19c4
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Jarek Kobus
2023-04-12 16:39:21 +02:00
parent f13c39c912
commit c09951d1b7
10 changed files with 33 additions and 33 deletions

View File

@@ -221,7 +221,6 @@ private:
const auto docSymbolGenerator = [&](const DocumentSymbol &info, const auto docSymbolGenerator = [&](const DocumentSymbol &info,
const LocatorFilterEntry &parent) { const LocatorFilterEntry &parent) {
LocatorFilterEntry entry; LocatorFilterEntry entry;
entry.filter = this;
entry.displayName = ClangdClient::displayNameFromDocumentSymbol( entry.displayName = ClangdClient::displayNameFromDocumentSymbol(
static_cast<SymbolKind>(info.kind()), info.name(), static_cast<SymbolKind>(info.kind()), info.name(),
info.detail().value_or(QString())); info.detail().value_or(QString()));

View File

@@ -153,7 +153,8 @@ QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFil
QRegularExpressionMatch match = regexp.match(matchText); QRegularExpressionMatch match = regexp.match(matchText);
if (match.hasMatch()) { if (match.hasMatch()) {
LocatorFilterEntry filterEntry(this, path.fileName()); LocatorFilterEntry filterEntry;
filterEntry.displayName = path.fileName();
filterEntry.filePath = path; filterEntry.filePath = path;
filterEntry.extraInfo = path.shortNativePath(); filterEntry.extraInfo = path.shortNativePath();
filterEntry.linkForEditor = Link(path, link.targetLine, link.targetColumn); filterEntry.linkForEditor = Link(path, link.targetLine, link.targetColumn);

View File

@@ -66,7 +66,8 @@ void ExternalToolsFilter::prepareSearch(const QString &entry)
goodEntries.append(filterEntry); goodEntries.append(filterEntry);
} }
} }
LocatorFilterEntry configEntry(this, "Configure External Tool..."); LocatorFilterEntry configEntry;
configEntry.displayName = "Configure External Tool...";
configEntry.extraInfo = "Opens External Tool settings"; configEntry.extraInfo = "Opens External Tool settings";
configEntry.acceptor = [] { configEntry.acceptor = [] {
QMetaObject::invokeMethod(CorePlugin::instance(), [] { QMetaObject::invokeMethod(CorePlugin::instance(), [] {

View File

@@ -80,14 +80,7 @@ public:
LocatorFilterEntry() = default; LocatorFilterEntry() = default;
LocatorFilterEntry(ILocatorFilter *fromFilter, const QString &name)
: filter(fromFilter)
, displayName(name)
{}
using Acceptor = std::function<AcceptResult()>; using Acceptor = std::function<AcceptResult()>;
/* backpointer to creating filter */
ILocatorFilter *filter = nullptr;
/* displayed string */ /* displayed string */
QString displayName; QString displayName;
/* extra information displayed in parentheses and light-gray next to display name (optional)*/ /* extra information displayed in parentheses and light-gray next to display name (optional)*/

View File

@@ -75,7 +75,12 @@ QList<LocatorFilterEntry> JavaScriptFilter::matchesFor(
}; };
}; };
const QString expression = entry + " = " + result; const QString expression = entry + " = " + result;
entries.append({this, expression});
LocatorFilterEntry entry;
entry.displayName = expression;
entry.acceptor = [] { return AcceptResult(); };
entries.append(entry);
LocatorFilterEntry resultEntry; LocatorFilterEntry resultEntry;
resultEntry.displayName = Tr::tr("Copy to clipboard: %1").arg(result); resultEntry.displayName = Tr::tr("Copy to clipboard: %1").arg(result);
resultEntry.acceptor = acceptor(result); resultEntry.acceptor = acceptor(result);

View File

@@ -96,7 +96,8 @@ QList<LocatorFilterEntry> OpenDocumentsFilter::matchesFor(QFutureInterface<Locat
QString displayName = editorEntry.displayName; QString displayName = editorEntry.displayName;
const QRegularExpressionMatch match = regexp.match(displayName); const QRegularExpressionMatch match = regexp.match(displayName);
if (match.hasMatch()) { if (match.hasMatch()) {
LocatorFilterEntry filterEntry(this, displayName); LocatorFilterEntry filterEntry;
filterEntry.displayName = displayName;
filterEntry.filePath = FilePath::fromString(fileName); filterEntry.filePath = FilePath::fromString(fileName);
filterEntry.extraInfo = filterEntry.filePath.shortNativePath(); filterEntry.extraInfo = filterEntry.filePath.shortNativePath();
filterEntry.highlightInfo = highlightInfo(match); filterEntry.highlightInfo = highlightInfo(match);

View File

@@ -88,7 +88,8 @@ QList<LocatorFilterEntry> CppCurrentDocumentFilter::matchesFor(
} }
} }
LocatorFilterEntry filterEntry(this, name); LocatorFilterEntry filterEntry;
filterEntry.displayName = name;
filterEntry.displayIcon = info->icon(); filterEntry.displayIcon = info->icon();
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()}; filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
filterEntry.extraInfo = extraInfo; filterEntry.extraInfo = extraInfo;

View File

@@ -119,8 +119,8 @@ LocatorMatcherTask locatorMatcher(IndexItem::ItemType type, const EntryFromIndex
LocatorMatcherTask cppAllSymbolsMatcher() LocatorMatcherTask cppAllSymbolsMatcher()
{ {
const auto converter = [](const IndexItem::Ptr &info) { const auto converter = [](const IndexItem::Ptr &info) {
// TODO: Passing nullptr for filter -> accept won't work now. Replace with accept function. LocatorFilterEntry filterEntry;
LocatorFilterEntry filterEntry(nullptr, info->scopedSymbolName()); filterEntry.displayName = info->scopedSymbolName();
filterEntry.displayIcon = info->icon(); filterEntry.displayIcon = info->icon();
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()}; filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
if (info->type() == IndexItem::Class || info->type() == IndexItem::Enum) if (info->type() == IndexItem::Class || info->type() == IndexItem::Enum)
@@ -135,8 +135,8 @@ LocatorMatcherTask cppAllSymbolsMatcher()
LocatorMatcherTask cppClassMatcher() LocatorMatcherTask cppClassMatcher()
{ {
const auto converter = [](const IndexItem::Ptr &info) { const auto converter = [](const IndexItem::Ptr &info) {
// TODO: Passing nullptr for filter -> accept won't work now. Replace with accept function. LocatorFilterEntry filterEntry;
LocatorFilterEntry filterEntry(nullptr, info->symbolName()); filterEntry.displayName = info->symbolName();
filterEntry.displayIcon = info->icon(); filterEntry.displayIcon = info->icon();
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()}; filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
filterEntry.extraInfo = info->symbolScope().isEmpty() filterEntry.extraInfo = info->symbolScope().isEmpty()
@@ -158,8 +158,8 @@ LocatorMatcherTask cppFunctionMatcher()
extraInfo = info->shortNativeFilePath(); extraInfo = info->shortNativeFilePath();
else else
extraInfo.append(" (" + info->filePath().fileName() + ')'); extraInfo.append(" (" + info->filePath().fileName() + ')');
// TODO: Passing nullptr for filter -> accept won't work now. Replace with accept function. LocatorFilterEntry filterEntry;
LocatorFilterEntry filterEntry(nullptr, name + info->symbolType()); filterEntry.displayName = name + info->symbolType();
filterEntry.displayIcon = info->icon(); filterEntry.displayIcon = info->icon();
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()}; filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
filterEntry.extraInfo = extraInfo; filterEntry.extraInfo = extraInfo;
@@ -237,8 +237,8 @@ void matchesForCurrentDocument(QPromise<LocatorMatcherTask::OutputData> &promise
} }
} }
// TODO: Passing nullptr for filter -> accept won't work now. Replace with accept function. LocatorFilterEntry filterEntry;
LocatorFilterEntry filterEntry(nullptr, name); filterEntry.displayName = name;
filterEntry.displayIcon = info->icon(); filterEntry.displayIcon = info->icon();
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()}; filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
filterEntry.extraInfo = extraInfo; filterEntry.extraInfo = extraInfo;
@@ -326,7 +326,8 @@ CppLocatorFilter::CppLocatorFilter()
LocatorFilterEntry CppLocatorFilter::filterEntryFromIndexItem(IndexItem::Ptr info) LocatorFilterEntry CppLocatorFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
{ {
LocatorFilterEntry filterEntry(this, info->scopedSymbolName()); LocatorFilterEntry filterEntry;
filterEntry.displayName = info->scopedSymbolName();
filterEntry.displayIcon = info->icon(); filterEntry.displayIcon = info->icon();
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()}; filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
if (info->type() == IndexItem::Class || info->type() == IndexItem::Enum) if (info->type() == IndexItem::Class || info->type() == IndexItem::Enum)
@@ -423,7 +424,8 @@ CppClassesFilter::CppClassesFilter()
LocatorFilterEntry CppClassesFilter::filterEntryFromIndexItem(IndexItem::Ptr info) LocatorFilterEntry CppClassesFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
{ {
LocatorFilterEntry filterEntry(this, info->symbolName()); LocatorFilterEntry filterEntry;
filterEntry.displayName = info->symbolName();
filterEntry.displayIcon = info->icon(); filterEntry.displayIcon = info->icon();
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()}; filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
filterEntry.extraInfo = info->symbolScope().isEmpty() filterEntry.extraInfo = info->symbolScope().isEmpty()
@@ -453,7 +455,8 @@ LocatorFilterEntry CppFunctionsFilter::filterEntryFromIndexItem(IndexItem::Ptr i
extraInfo.append(" (" + info->filePath().fileName() + ')'); extraInfo.append(" (" + info->filePath().fileName() + ')');
} }
LocatorFilterEntry filterEntry(this, name + info->symbolType()); LocatorFilterEntry filterEntry;
filterEntry.displayName = name + info->symbolType();
filterEntry.displayIcon = info->icon(); filterEntry.displayIcon = info->icon();
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()}; filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
filterEntry.extraInfo = extraInfo; filterEntry.extraInfo = extraInfo;

View File

@@ -38,8 +38,6 @@ void filterResults(QPromise<LocatorMatcherTask::OutputData> &promise, Client *cl
: Utils::filtered(results, doFilter); : Utils::filtered(results, doFilter);
const auto generateEntry = [client](const SymbolInformation &info) { const auto generateEntry = [client](const SymbolInformation &info) {
LocatorFilterEntry entry; LocatorFilterEntry entry;
// TODO: Passing nullptr for filter -> accept won't work now. Replace with accept function.
entry.filter = nullptr;
entry.displayName = info.name(); entry.displayName = info.name();
if (std::optional<QString> container = info.containerName()) if (std::optional<QString> container = info.containerName())
entry.extraInfo = container.value_or(QString()); entry.extraInfo = container.value_or(QString());
@@ -170,11 +168,9 @@ void DocumentLocatorFilter::resetSymbols()
} }
static LocatorFilterEntry generateLocatorEntry(const SymbolInformation &info, static LocatorFilterEntry generateLocatorEntry(const SymbolInformation &info,
ILocatorFilter *filter,
DocumentUri::PathMapper pathMapper) DocumentUri::PathMapper pathMapper)
{ {
LocatorFilterEntry entry; LocatorFilterEntry entry;
entry.filter = filter;
entry.displayName = info.name(); entry.displayName = info.name();
if (std::optional<QString> container = info.containerName()) if (std::optional<QString> container = info.containerName())
entry.extraInfo = container.value_or(QString()); entry.extraInfo = container.value_or(QString());
@@ -190,7 +186,7 @@ QList<LocatorFilterEntry> DocumentLocatorFilter::entriesForSymbolsInfo(
QList<LocatorFilterEntry> entries; QList<LocatorFilterEntry> entries;
for (const SymbolInformation &info : infoList) { for (const SymbolInformation &info : infoList) {
if (regexp.match(info.name()).hasMatch()) if (regexp.match(info.name()).hasMatch())
entries << LanguageClient::generateLocatorEntry(info, this, m_pathMapper); entries << LanguageClient::generateLocatorEntry(info, m_pathMapper);
} }
return entries; return entries;
} }
@@ -228,7 +224,6 @@ QList<LocatorFilterEntry> DocumentLocatorFilter::matchesFor(
const LocatorFilterEntry &parent) { const LocatorFilterEntry &parent) {
Q_UNUSED(parent) Q_UNUSED(parent)
LocatorFilterEntry entry; LocatorFilterEntry entry;
entry.filter = this;
entry.displayName = info.name(); entry.displayName = info.name();
if (std::optional<QString> detail = info.detail()) if (std::optional<QString> detail = info.detail())
entry.extraInfo = detail.value_or(QString()); entry.extraInfo = detail.value_or(QString());
@@ -362,8 +357,8 @@ QList<LocatorFilterEntry> WorkspaceLocatorFilter::matchesFor(
return m_filterKinds.contains(SymbolKind(info.symbol.kind())); return m_filterKinds.contains(SymbolKind(info.symbol.kind()));
}); });
} }
auto generateEntry = [this](const SymbolInfoWithPathMapper &info) { auto generateEntry = [](const SymbolInfoWithPathMapper &info) {
return generateLocatorEntry(info.symbol, this, info.mapper); return generateLocatorEntry(info.symbol, info.mapper);
}; };
return Utils::transform(m_results, generateEntry).toList(); return Utils::transform(m_results, generateEntry).toList();
} }

View File

@@ -48,7 +48,8 @@ QList<LocatorFilterEntry> FunctionFilter::matchesFor(QFutureInterface<LocatorFil
const QRegularExpressionMatch match = regexp.match(info.symbolName); const QRegularExpressionMatch match = regexp.match(info.symbolName);
if (match.hasMatch()) { if (match.hasMatch()) {
LocatorFilterEntry filterEntry(this, info.displayName); LocatorFilterEntry filterEntry;
filterEntry.displayName = info.displayName;
filterEntry.linkForEditor = {info.fileName, info.line, info.column}; filterEntry.linkForEditor = {info.fileName, info.line, info.column};
filterEntry.extraInfo = info.extraInfo; filterEntry.extraInfo = info.extraInfo;
filterEntry.highlightInfo = highlightInfo(match); filterEntry.highlightInfo = highlightInfo(match);