Move: Implement Kotlin-specific editor for class name
#KT-13192 Fixed
This commit is contained in:
@@ -142,7 +142,7 @@ abstract class CompletionSession(
|
||||
|
||||
// LookupElementsCollector instantiation is deferred because virtual call to createSorter uses data from derived classes
|
||||
protected val collector: LookupElementsCollector by lazy(LazyThreadSafetyMode.NONE) {
|
||||
LookupElementsCollector(prefixMatcher, parameters, resultSet, createSorter())
|
||||
LookupElementsCollector(prefixMatcher, parameters, resultSet, createSorter(), (file as? KtCodeFragment)?.extraCompletionFilter)
|
||||
}
|
||||
|
||||
protected val searchScope: GlobalSearchScope = getResolveScope(parameters.originalFile as KtFile)
|
||||
|
||||
@@ -418,4 +418,6 @@ fun OffsetMap.tryGetOffset(key: OffsetKey): Int? {
|
||||
catch(e: Exception) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var KtCodeFragment.extraCompletionFilter: ((LookupElement) -> Boolean)? by CopyableUserDataProperty(Key.create("EXTRA_COMPLETION_FILTER"))
|
||||
@@ -159,6 +159,7 @@ object KeywordCompletion {
|
||||
CommentFilter(),
|
||||
ParentFilter(ClassFilter(KtLiteralStringTemplateEntry::class.java)),
|
||||
ParentFilter(ClassFilter(KtConstantExpression::class.java)),
|
||||
FileFilter(ClassFilter(KtTypeCodeFragment::class.java)),
|
||||
LeftNeighbour(TextFilter(".")),
|
||||
LeftNeighbour(TextFilter("?."))
|
||||
))
|
||||
@@ -182,6 +183,17 @@ object KeywordCompletion {
|
||||
}
|
||||
}
|
||||
|
||||
private class FileFilter(filter : ElementFilter) : PositionElementFilter() {
|
||||
init {
|
||||
setFilter(filter)
|
||||
}
|
||||
|
||||
override fun isAcceptable(element : Any?, context : PsiElement?) : Boolean {
|
||||
val file = (element as? PsiElement)?.containingFile
|
||||
return file != null && (filter?.isAcceptable(file, context) ?: true)
|
||||
}
|
||||
}
|
||||
|
||||
private fun buildFilter(position: PsiElement): (KtKeywordToken) -> Boolean {
|
||||
var parent = position.parent
|
||||
var prevParent = position
|
||||
|
||||
+5
-2
@@ -32,7 +32,8 @@ class LookupElementsCollector(
|
||||
private val prefixMatcher: PrefixMatcher,
|
||||
private val completionParameters: CompletionParameters,
|
||||
resultSet: CompletionResultSet,
|
||||
sorter: CompletionSorter
|
||||
sorter: CompletionSorter,
|
||||
private val filter: ((LookupElement) -> Boolean)?
|
||||
) {
|
||||
|
||||
var bestMatchingDegree = Int.MIN_VALUE
|
||||
@@ -132,7 +133,9 @@ class LookupElementsCollector(
|
||||
}
|
||||
}
|
||||
|
||||
elements.add(result)
|
||||
if (filter?.invoke(result) ?: true) {
|
||||
elements.add(result)
|
||||
}
|
||||
|
||||
val matchingDegree = RealPrefixMatchingWeigher.getBestMatchingDegree(result, prefixMatcher)
|
||||
bestMatchingDegree = Math.max(bestMatchingDegree, matchingDegree)
|
||||
|
||||
Reference in New Issue
Block a user