Restarting completion when new suggestions may appear
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.completion.impl.CamelHumpMatcher
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.patterns.ElementPattern
|
||||
import com.intellij.patterns.PatternCondition
|
||||
import com.intellij.patterns.StandardPatterns
|
||||
import com.intellij.psi.PsiCompiledElement
|
||||
import com.intellij.psi.PsiElement
|
||||
@@ -28,6 +29,7 @@ import com.intellij.psi.impl.source.tree.LeafPsiElement
|
||||
import com.intellij.psi.search.DelegatingGlobalSearchScope
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.util.ProcessingContext
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
@@ -350,6 +352,15 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
|
||||
override fun doComplete() {
|
||||
assert(parameters.getCompletionType() == CompletionType.BASIC)
|
||||
|
||||
// if we are typing parameter name, restart completion each time we type an upper case letter because new suggestions will appear (previous words can be used as user prefix)
|
||||
if (parameterNameAndTypeCompletion != null) {
|
||||
val prefixPattern = StandardPatterns.string().with(object : PatternCondition<String>("Prefix ends with uppercase letter") {
|
||||
override fun accepts(prefix: String, context: ProcessingContext?) = prefix.isNotEmpty() && prefix.last().isUpperCase()
|
||||
})
|
||||
(CompletionService.getCompletionService().getCurrentCompletion() as CompletionProgressIndicator)
|
||||
.addWatchedPrefix(parameters.getOffset(), prefixPattern)
|
||||
}
|
||||
|
||||
if (completionKind == CompletionKind.PARAMETER_NAME || completionKind == CompletionKind.ANNOTATION_TYPES_OR_PARAMETER_NAME) {
|
||||
collector.suppressItemSelectionByCharsOnTyping = true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user