From 0d5dbdfa0ca6aeb07a11dbbb7ff9eddb73ddaf24 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 7 Jul 2015 13:53:01 +0300 Subject: [PATCH] Added completion action to exclude classes/packages. #KT-2413 fixed --- ...cludeFromCompletionLookupActionProvider.kt | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinExcludeFromCompletionLookupActionProvider.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinExcludeFromCompletionLookupActionProvider.kt index 657d949850b..2277782fa35 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinExcludeFromCompletionLookupActionProvider.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinExcludeFromCompletionLookupActionProvider.kt @@ -33,25 +33,22 @@ public class KotlinExcludeFromCompletionLookupActionProvider : LookupActionProvi override fun fillActions(element: LookupElement, lookup: Lookup, consumer: Consumer) { val lookupObject = element.getObject() as? DeclarationLookupObject ?: return - lookupObject.descriptor?.let { - it.importableFqName?.let { - addExcludes(consumer, lookup.getPsiFile().getProject(), it) - return - } + val project = lookup.getPsiFile().getProject() + + lookupObject.descriptor?.importableFqName?.let { + addExcludes(consumer, project, it.asString()) + return } - lookupObject.psiElement?.let { - val fakeLookupElement = object : LookupElement() { - override fun getLookupString() = "" - override fun getObject() = it - } - - ExcludeFromCompletionLookupActionProvider().fillActions(fakeLookupElement, lookup, consumer) + val psiElement = lookupObject.psiElement + if (psiElement is PsiClass) { + val qualifiedName = psiElement.getQualifiedName() ?: return + addExcludes(consumer, project, qualifiedName) } } - private fun addExcludes(consumer: Consumer, project: Project, fqName: FqName) { - for (s in AddImportAction.getAllExcludableStrings(fqName.asString())) { + private fun addExcludes(consumer: Consumer, project: Project, fqName: String) { + for (s in AddImportAction.getAllExcludableStrings(fqName)) { consumer.consume(ExcludeFromCompletionAction(project, s)) } }