DocumentLocatorFilter: Make internals reusable in LocatorMatcher

Prepare for LocatorMatcher implementation.

Change-Id: I3d78045a06c8ebefacb033f0eabb5f7a2457ab06
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2023-04-17 18:02:55 +02:00
parent 90c09c65f9
commit 21c71cded7
3 changed files with 38 additions and 52 deletions

View File

@@ -218,25 +218,23 @@ private:
};
QList<Entry> docEntries;
const auto docSymbolGenerator = [&](const DocumentSymbol &info,
const LocatorFilterEntry &parent) {
LocatorFilterEntry entry;
const auto docSymbolModifier = [&docEntries](LocatorFilterEntry &entry,
const DocumentSymbol &info,
const LocatorFilterEntry &parent) {
entry.displayName = ClangdClient::displayNameFromDocumentSymbol(
static_cast<SymbolKind>(info.kind()), info.name(),
info.detail().value_or(QString()));
entry.linkForEditor = linkForDocSymbol(info);
entry.extraInfo = parent.extraInfo;
if (!entry.extraInfo.isEmpty())
entry.extraInfo.append("::");
entry.extraInfo.append(parent.displayName);
// TODO: Can we extend clangd to send visibility information?
entry.displayIcon = LanguageClient::symbolIcon(info.kind());
docEntries.append({entry, info});
return entry;
};
QList<LocatorFilterEntry> allMatches = matchesForImpl(future, entry, docSymbolGenerator);
const QList<LocatorFilterEntry> allMatches = matchesForImpl(future, entry,
docSymbolModifier);
if (docEntries.isEmpty())
return allMatches; // SymbolInformation case