User: llamalad7 Date: 07 Oct 25 22:50 Revision: eee075e282188b2bc1233d738c2aaa5a7415e5b7 Summary: Fix: Suggest all targets when autocompleting with a specifier. (#2526) Currently, the suggestions come from using a specifier but no target, meaning e.g. `:FIRST` only suggests the first call of all of them. TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10170&personal=false Index: src/main/kotlin/platform/mixin/handlers/injectionPoint/InjectionPoint.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/injectionPoint/InjectionPoint.kt (revision 893d2a2daf1d5e0a8aaa007f297892d8ad45289b) +++ src/main/kotlin/platform/mixin/handlers/injectionPoint/InjectionPoint.kt (revision eee075e282188b2bc1233d738c2aaa5a7415e5b7) @@ -130,7 +130,7 @@ return doCreateCollectVisitor(at, target, targetClass, mode)?.also { val isInsideSlice = at.parentOfType()?.hasQualifiedName(SLICE) == true val defaultSpecifier = if (isInsideSlice) InjectionPointSpecifier.FIRST else InjectionPointSpecifier.ALL - addFilters(at, targetClass, it, defaultSpecifier) + addFilters(at, targetClass, it, defaultSpecifier, mode) } } @@ -138,22 +138,24 @@ at: PsiAnnotation, targetClass: ClassNode, collectVisitor: CollectVisitor, - defaultSpecifier: InjectionPointSpecifier + defaultSpecifier: InjectionPointSpecifier, + mode: CollectVisitor.Mode, ) { - addStandardFilters(at, targetClass, collectVisitor, defaultSpecifier) + addStandardFilters(at, targetClass, collectVisitor, defaultSpecifier, mode) } fun addStandardFilters( at: PsiAnnotation, targetClass: ClassNode, collectVisitor: CollectVisitor, - defaultSpecifier: InjectionPointSpecifier + defaultSpecifier: InjectionPointSpecifier, + mode: CollectVisitor.Mode, ) { addShiftSupport(at, targetClass, collectVisitor) addSliceFilter(at, targetClass, collectVisitor) // make sure the ordinal filter is last, so that the ordinal only increments once the other filters have passed addOrdinalFilter(at, targetClass, collectVisitor) - addSpecifierFilter(at, targetClass, collectVisitor, defaultSpecifier) + addSpecifierFilter(at, targetClass, collectVisitor, defaultSpecifier, mode) } protected open fun addShiftSupport(at: PsiAnnotation, targetClass: ClassNode, collectVisitor: CollectVisitor<*>) { @@ -213,8 +215,13 @@ at: PsiAnnotation, targetClass: ClassNode, collectVisitor: CollectVisitor, - defaultSpecifier: InjectionPointSpecifier + defaultSpecifier: InjectionPointSpecifier, + mode: CollectVisitor.Mode, ) { + if (mode == CollectVisitor.Mode.COMPLETION) { + // Ignore the specifier, we want to show all results + return + } val point = at.findDeclaredAttributeValue("value")?.constantStringValue ?: return val specifier = InjectionPointSpecifier.entries.firstOrNull { point.endsWith(":$it") } ?: defaultSpecifier collectVisitor.addResultFilter("specifier") { results, _ ->