Added completion action to exclude classes/packages.
#KT-2413 fixed
This commit is contained in:
+11
-14
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user