User: joe Date: 03 Feb 23 23:25 Revision: b6fa36e2f533ee8f1ad7e83c0bfe12fca0051d79 Summary: De-prioritize mixin class in @Mixin annotation completions TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=8297&personal=false Index: src/main/kotlin/platform/mixin/completion/MixinCompletionWeigher.kt =================================================================== --- src/main/kotlin/platform/mixin/completion/MixinCompletionWeigher.kt (revision b6fa36e2f533ee8f1ad7e83c0bfe12fca0051d79) +++ src/main/kotlin/platform/mixin/completion/MixinCompletionWeigher.kt (revision b6fa36e2f533ee8f1ad7e83c0bfe12fca0051d79) @@ -0,0 +1,46 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2023 minecraft-dev + * + * MIT License + */ + +package com.demonwav.mcdev.platform.mixin.completion + +import com.demonwav.mcdev.platform.mixin.util.MixinConstants +import com.demonwav.mcdev.util.equivalentTo +import com.demonwav.mcdev.util.findContainingClass +import com.intellij.codeInsight.completion.CompletionLocation +import com.intellij.codeInsight.completion.CompletionWeigher +import com.intellij.codeInsight.lookup.LookupElement +import com.intellij.patterns.PlatformPatterns +import com.intellij.patterns.PsiJavaPatterns +import com.intellij.psi.PsiClass + +class MixinCompletionWeigher : CompletionWeigher() { + private val mixinAnnotation = PlatformPatterns.psiElement() + .inside( + false, + PsiJavaPatterns.psiAnnotation().qName(MixinConstants.Annotations.MIXIN), + PlatformPatterns.psiFile() + )!! + + override fun weigh(element: LookupElement, location: CompletionLocation): Int { + val lookupClass = element.psiElement as? PsiClass ?: return 0 + + val position = location.completionParameters.position + if (!mixinAnnotation.accepts(position)) { + return 0 + } + + val clazz = position.findContainingClass() ?: return 0 + if (clazz equivalentTo lookupClass) { + return -1 + } + + return 0 + } +} Index: src/main/resources/META-INF/plugin.xml =================================================================== --- src/main/resources/META-INF/plugin.xml (revision 94c0afb6f45245e102ae2b4111ca226d7e5a74a8) +++ src/main/resources/META-INF/plugin.xml (revision b6fa36e2f533ee8f1ad7e83c0bfe12fca0051d79) @@ -351,6 +351,7 @@ +