Added completion action to exclude classes/packages.

#KT-2413 fixed
This commit is contained in:
Evgeny Gerashchenko
2015-07-07 13:53:01 +03:00
parent b98aa76325
commit 0d5dbdfa0c
@@ -33,25 +33,22 @@ public class KotlinExcludeFromCompletionLookupActionProvider : LookupActionProvi
override fun fillActions(element: LookupElement, lookup: Lookup, consumer: Consumer<LookupElementAction>) { override fun fillActions(element: LookupElement, lookup: Lookup, consumer: Consumer<LookupElementAction>) {
val lookupObject = element.getObject() as? DeclarationLookupObject ?: return val lookupObject = element.getObject() as? DeclarationLookupObject ?: return
lookupObject.descriptor?.let { val project = lookup.getPsiFile().getProject()
it.importableFqName?.let {
addExcludes(consumer, lookup.getPsiFile().getProject(), it) lookupObject.descriptor?.importableFqName?.let {
return addExcludes(consumer, project, it.asString())
} return
} }
lookupObject.psiElement?.let { val psiElement = lookupObject.psiElement
val fakeLookupElement = object : LookupElement() { if (psiElement is PsiClass) {
override fun getLookupString() = "" val qualifiedName = psiElement.getQualifiedName() ?: return
override fun getObject() = it addExcludes(consumer, project, qualifiedName)
}
ExcludeFromCompletionLookupActionProvider().fillActions(fakeLookupElement, lookup, consumer)
} }
} }
private fun addExcludes(consumer: Consumer<LookupElementAction>, project: Project, fqName: FqName) { private fun addExcludes(consumer: Consumer<LookupElementAction>, project: Project, fqName: String) {
for (s in AddImportAction.getAllExcludableStrings(fqName.asString())) { for (s in AddImportAction.getAllExcludableStrings(fqName)) {
consumer.consume(ExcludeFromCompletionAction(project, s)) consumer.consume(ExcludeFromCompletionAction(project, s))
} }
} }