diff options
author | Moody Liu <mooodyhunter@outlook.com> | 2022-05-25 18:41:28 +0100 |
---|---|---|
committer | Moody Liu <mooodyhunter@outlook.com> | 2022-05-26 11:57:35 +0100 |
commit | f65fac151469570ff5b751a46ab0c175e3f670fb (patch) | |
tree | 0d851dc237de4094b4cc5dc5790657c4aa24b5e8 /tools | |
parent | 83f18c3191fd27ea66e0d4e9ade50e94ae8da091 (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.cpp | 33 |
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; } |