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 @@
+