Skip to content

Commit eee075e

Browse files
authored
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.
1 parent 893d2a2 commit eee075e

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/main/kotlin/platform/mixin/handlers/injectionPoint/InjectionPoint.kt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,30 +130,32 @@ abstract class InjectionPoint<T : PsiElement> {
130130
return doCreateCollectVisitor(at, target, targetClass, mode)?.also {
131131
val isInsideSlice = at.parentOfType<PsiAnnotation>()?.hasQualifiedName(SLICE) == true
132132
val defaultSpecifier = if (isInsideSlice) InjectionPointSpecifier.FIRST else InjectionPointSpecifier.ALL
133-
addFilters(at, targetClass, it, defaultSpecifier)
133+
addFilters(at, targetClass, it, defaultSpecifier, mode)
134134
}
135135
}
136136

137137
protected open fun addFilters(
138138
at: PsiAnnotation,
139139
targetClass: ClassNode,
140140
collectVisitor: CollectVisitor<T>,
141-
defaultSpecifier: InjectionPointSpecifier
141+
defaultSpecifier: InjectionPointSpecifier,
142+
mode: CollectVisitor.Mode,
142143
) {
143-
addStandardFilters(at, targetClass, collectVisitor, defaultSpecifier)
144+
addStandardFilters(at, targetClass, collectVisitor, defaultSpecifier, mode)
144145
}
145146

146147
fun addStandardFilters(
147148
at: PsiAnnotation,
148149
targetClass: ClassNode,
149150
collectVisitor: CollectVisitor<T>,
150-
defaultSpecifier: InjectionPointSpecifier
151+
defaultSpecifier: InjectionPointSpecifier,
152+
mode: CollectVisitor.Mode,
151153
) {
152154
addShiftSupport(at, targetClass, collectVisitor)
153155
addSliceFilter(at, targetClass, collectVisitor)
154156
// make sure the ordinal filter is last, so that the ordinal only increments once the other filters have passed
155157
addOrdinalFilter(at, targetClass, collectVisitor)
156-
addSpecifierFilter(at, targetClass, collectVisitor, defaultSpecifier)
158+
addSpecifierFilter(at, targetClass, collectVisitor, defaultSpecifier, mode)
157159
}
158160

159161
protected open fun addShiftSupport(at: PsiAnnotation, targetClass: ClassNode, collectVisitor: CollectVisitor<*>) {
@@ -213,8 +215,13 @@ abstract class InjectionPoint<T : PsiElement> {
213215
at: PsiAnnotation,
214216
targetClass: ClassNode,
215217
collectVisitor: CollectVisitor<T>,
216-
defaultSpecifier: InjectionPointSpecifier
218+
defaultSpecifier: InjectionPointSpecifier,
219+
mode: CollectVisitor.Mode,
217220
) {
221+
if (mode == CollectVisitor.Mode.COMPLETION) {
222+
// Ignore the specifier, we want to show all results
223+
return
224+
}
218225
val point = at.findDeclaredAttributeValue("value")?.constantStringValue ?: return
219226
val specifier = InjectionPointSpecifier.entries.firstOrNull { point.endsWith(":$it") } ?: defaultSpecifier
220227
collectVisitor.addResultFilter("specifier") { results, _ ->

0 commit comments

Comments
 (0)