Dropped ability to specify custom PrefixMatcher in LookupElementsCollector

This commit is contained in:
Valentin Kipyatkov
2015-10-08 19:54:35 +03:00
parent aa0a68b4be
commit b549bc913a
2 changed files with 15 additions and 21 deletions
@@ -28,30 +28,24 @@ import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject
import java.util.*
class LookupElementsCollector(
private val defaultPrefixMatcher: PrefixMatcher,
private val prefixMatcher: PrefixMatcher,
private val completionParameters: CompletionParameters,
resultSet: CompletionResultSet,
private val lookupElementFactory: LookupElementFactory,
private val sorter: CompletionSorter
) {
private val elements = LinkedHashMap<PrefixMatcher, ArrayList<LookupElement>>()
private val elements = ArrayList<LookupElement>()
private val defaultResultSet = resultSet
.withPrefixMatcher(defaultPrefixMatcher)
private val resultSet = resultSet
.withPrefixMatcher(prefixMatcher)
.withRelevanceSorter(sorter)
private val postProcessors = ArrayList<(LookupElement) -> LookupElement>()
public fun flushToResultSet() {
if (!elements.isEmpty()) {
for ((prefixMatcher, elements) in elements) {
val resultSet = if (prefixMatcher == defaultPrefixMatcher)
defaultResultSet
else
defaultResultSet.withPrefixMatcher(prefixMatcher)
resultSet.addAllElements(elements)
}
resultSet.addAllElements(elements)
elements.clear()
isResultEmpty = false
}
@@ -81,20 +75,20 @@ class LookupElementsCollector(
lookupElements = lookupElements.map { it.withReceiverCast() }
}
addElements(lookupElements, notImported = notImported)
addElements(lookupElements, notImported)
}
}
public fun addElement(element: LookupElement, prefixMatcher: PrefixMatcher = defaultPrefixMatcher, notImported: Boolean = false) {
public fun addElement(element: LookupElement, notImported: Boolean = false) {
if (!prefixMatcher.prefixMatches(element)) return
if (notImported) {
element.putUserData(NOT_IMPORTED_KEY, Unit)
if (isResultEmpty && elements.isEmpty()) { /* without these checks we may get duplicated items */
addElement(element.suppressAutoInsertion(), prefixMatcher)
addElement(element.suppressAutoInsertion())
}
else {
addElement(element, prefixMatcher)
addElement(element)
}
return
}
@@ -131,7 +125,7 @@ class LookupElementsCollector(
}
}
elements.getOrPut(prefixMatcher) { ArrayList() }.add(result)
elements.add(result)
}
// used to avoid insertion of spaces before/after ',', '=' on just typing
@@ -141,15 +135,15 @@ class LookupElementsCollector(
return insertedText == element.getUserDataDeep(KotlinCompletionCharFilter.JUST_TYPING_PREFIX)
}
public fun addElements(elements: Iterable<LookupElement>, prefixMatcher: PrefixMatcher = defaultPrefixMatcher, notImported: Boolean = false) {
elements.forEach { addElement(it, prefixMatcher, notImported) }
public fun addElements(elements: Iterable<LookupElement>, notImported: Boolean = false) {
elements.forEach { addElement(it, notImported) }
}
public fun advertiseSecondCompletion() {
JavaCompletionContributor.advertiseSecondCompletion(completionParameters.getOriginalFile().getProject(), defaultResultSet)
JavaCompletionContributor.advertiseSecondCompletion(completionParameters.getOriginalFile().getProject(), resultSet)
}
public fun restartCompletionOnPrefixChange(prefixCondition: ElementPattern<String>) {
defaultResultSet.restartCompletionOnPrefixChange(prefixCondition)
resultSet.restartCompletionOnPrefixChange(prefixCondition)
}
}
@@ -145,7 +145,7 @@ class ParameterNameAndTypeCompletion(
val lookupElement = MyLookupElement.create(parameterName, type, lookupElementFactory)
if (lookupElement != null) {
lookupElement.putUserData(PRIORITY_KEY, userPrefix.length()) // suggestions with longer user prefix get lower priority
collector.addElement(lookupElement, notImported = notImported)
collector.addElement(lookupElement, notImported)
suggestionsByTypesAdded.add(type)
}
}