aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMoody Liu <mooodyhunter@outlook.com>2022-05-25 18:41:28 +0100
committerMoody Liu <mooodyhunter@outlook.com>2022-05-26 11:57:35 +0100
commitf65fac151469570ff5b751a46ab0c175e3f670fb (patch)
tree0d851dc237de4094b4cc5dc5790657c4aa24b5e8 /tools
parent83f18c3191fd27ea66e0d4e9ade50e94ae8da091 (diff)
qmlls: use CompletionItemKind::Class for QML types
Change-Id: Ia121463cf4352bedc03475268f38ce32c0073d50 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tools')
-rw-r--r--tools/qmlls/qmlcompletionsupport.cpp33
1 files changed, 19 insertions, 14 deletions
diff --git a/tools/qmlls/qmlcompletionsupport.cpp b/tools/qmlls/qmlcompletionsupport.cpp
index 18933684fa..51d9fab776 100644
--- a/tools/qmlls/qmlcompletionsupport.cpp
+++ b/tools/qmlls/qmlcompletionsupport.cpp
@@ -457,7 +457,7 @@ static QList<CompletionItem> reachableSymbols(DomItem &context, const Completion
{
// returns completions for the reachable types or attributes from context
QList<CompletionItem> res;
- QSet<QString> symbols;
+ QMap<CompletionItemKind, QSet<QString>> symbols;
QSet<quintptr> visited;
QList<Path> visitedRefs;
auto addLocalSymbols = [&res, typeCompletionType, completeMethodCalls, &symbols](DomItem &el) {
@@ -466,19 +466,20 @@ static QList<CompletionItem> reachableSymbols(DomItem &context, const Completion
return false;
case TypeCompletionsType::Types:
switch (el.internalKind()) {
- case DomType::ImportScope:
+ case DomType::ImportScope: {
+ const QSet<QString> localSymbols = el.localSymbolNames(
+ LocalSymbolsType::QmlTypes | LocalSymbolsType::Namespaces);
qCDebug(complLog) << "adding local symbols of:" << el.internalKindStr()
- << el.canonicalPath()
- << el.localSymbolNames(LocalSymbolsType::QmlTypes
- | LocalSymbolsType::Namespaces);
- symbols += el.localSymbolNames(LocalSymbolsType::QmlTypes
- | LocalSymbolsType::Namespaces);
+ << el.canonicalPath() << localSymbols;
+ symbols[CompletionItemKind::Class] += localSymbols;
break;
- default:
+ }
+ default: {
qCDebug(complLog) << "skipping local symbols for non type" << el.internalKindStr()
<< el.canonicalPath();
break;
}
+ }
break;
case TypeCompletionsType::TypesAndAttributes:
auto localSymbols = el.localSymbolNames(LocalSymbolsType::All);
@@ -518,7 +519,7 @@ static QList<CompletionItem> reachableSymbols(DomItem &context, const Completion
}
qCDebug(complLog) << "adding local symbols of:" << el.internalKindStr()
<< el.canonicalPath() << localSymbols;
- symbols += localSymbols;
+ symbols[CompletionItemKind::Field] += localSymbols;
break;
}
return true;
@@ -546,11 +547,15 @@ static QList<CompletionItem> reachableSymbols(DomItem &context, const Completion
context.resolve(toSearch, addReachableSymbols, &defaultErrorHandler);
// add attached types? technically we should...
}
- for (const QString &s : qAsConst(symbols)) {
- CompletionItem comp;
- comp.label = s.toUtf8();
- comp.kind = int(CompletionItemKind::Field);
- res.append(comp);
+ for (auto symbolKinds = symbols.constBegin(); symbolKinds != symbols.constEnd();
+ ++symbolKinds) {
+ for (auto symbol = symbolKinds.value().constBegin();
+ symbol != symbolKinds.value().constEnd(); ++symbol) {
+ CompletionItem comp;
+ comp.label = symbol->toUtf8();
+ comp.kind = int(symbolKinds.key());
+ res.append(comp);
+ }
}
return res;
}