From 4226b0b2b7043eca606a41b87ec1ff40b79123c4 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 16 Jul 2015 14:20:50 +0300 Subject: [PATCH] Better presentation for non-root packages in completion --- .../idea/completion/BasicCompletionSession.kt | 3 +-- .../idea/completion/LookupElementFactory.kt | 22 ++++++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt index 52e3314746c..b2b77ba55a1 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt @@ -205,14 +205,13 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration, if (isNoQualifierContext() && (completionKind.descriptorKindFilter?.kindMask ?: 0).and(DescriptorKindFilter.PACKAGES_MASK) != 0) { //TODO: move this code somewhere else val packageNames = PackageIndexUtil.getSubPackageFqNames(FqName.ROOT, originalSearchScope, project, prefixMatcher.asNameFilter()) - .map { it.shortName() } .toMutableSet() if (!ProjectStructureUtil.isJsKotlinModule(parameters.getOriginalFile() as JetFile)) { JavaPsiFacade.getInstance(project).findPackage("")?.getSubPackages(originalSearchScope)?.forEach { psiPackage -> val name = psiPackage.getName() if (Name.isValidIdentifier(name!!)) { - packageNames.add(Name.identifier(name)) + packageNames.add(FqName(name)) } } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt index 8563e7e7b0b..09f2be940a9 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt @@ -141,10 +141,17 @@ public class LookupElementFactory( return element.withIconFromLookupObject() } - public fun createLookupElementForPackage(shortName: Name): LookupElement { - return LookupElementBuilder.create(PackageLookupObject(shortName), shortName.asString()) - .withInsertHandler(BaseDeclarationInsertHandler()) - .withIconFromLookupObject() + public fun createLookupElementForPackage(name: FqName): LookupElement { + val shortName = name.shortName() + var element = LookupElementBuilder.create(PackageLookupObject(shortName), shortName.asString()) + + element = element.withInsertHandler(BaseDeclarationInsertHandler()) + + if (!name.parent().isRoot()) { + element = element.appendTailText(" (${name.asString()})", true) + } + + return element.withIconFromLookupObject() } private data class PackageLookupObject(override val name: Name) : DeclarationLookupObject { @@ -174,8 +181,11 @@ public class LookupElementFactory( return createLookupElementForJavaClass(declaration, qualifyNestedClasses, includeClassTypeArguments) } - if (descriptor is PackageViewDescriptor || descriptor is PackageFragmentDescriptor) { - return createLookupElementForPackage(descriptor.getName()) + if (descriptor is PackageViewDescriptor) { + return createLookupElementForPackage(descriptor.fqName) + } + if (descriptor is PackageFragmentDescriptor) { + return createLookupElementForPackage(descriptor.fqName) } // for constructor use name and icon of containing class