diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 82936fd7495..33e664b9fa6 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -233,11 +233,6 @@
order="after JetCompletionContributor"
implementationClass="org.jetbrains.jet.plugin.liveTemplates.JetLiveTemplateCompletionContributor"/>
-
-
diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt
index 8dad0bafa2f..e2acb8dc832 100644
--- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt
+++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt
@@ -105,6 +105,8 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
}
KeywordCompletion().complete(parameters, collector)
+
+ NamedParametersCompletion.complete(parameters, collector)
}
private fun addNonImported() {
diff --git a/idea/src/org/jetbrains/jet/plugin/completion/KotlinNamedParametersContributor.kt b/idea/src/org/jetbrains/jet/plugin/completion/NamedParametersCompletion.kt
similarity index 73%
rename from idea/src/org/jetbrains/jet/plugin/completion/KotlinNamedParametersContributor.kt
rename to idea/src/org/jetbrains/jet/plugin/completion/NamedParametersCompletion.kt
index 175d244e107..73ac69ee08e 100644
--- a/idea/src/org/jetbrains/jet/plugin/completion/KotlinNamedParametersContributor.kt
+++ b/idea/src/org/jetbrains/jet/plugin/completion/NamedParametersCompletion.kt
@@ -16,13 +16,7 @@
package org.jetbrains.jet.plugin.completion
-import com.intellij.codeInsight.completion.CompletionContributor
-import com.intellij.codeInsight.completion.CompletionType
-import com.intellij.patterns.PlatformPatterns
import org.jetbrains.jet.lang.psi.JetValueArgument
-import com.intellij.codeInsight.completion.CompletionProvider
-import com.intellij.util.ProcessingContext
-import com.intellij.codeInsight.completion.CompletionResultSet
import com.intellij.codeInsight.completion.CompletionParameters
import org.jetbrains.jet.lexer.JetTokens
import com.intellij.psi.util.PsiTreeUtil
@@ -31,13 +25,11 @@ import org.jetbrains.jet.plugin.references.JetReference
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor
import com.intellij.codeInsight.lookup.LookupElementBuilder
import org.jetbrains.jet.plugin.JetIcons
-import org.jetbrains.jet.lang.resolve.name.Name
import org.jetbrains.jet.plugin.quickfix.QuickFixUtil
import org.jetbrains.jet.renderer.DescriptorRenderer
import com.intellij.codeInsight.completion.InsertHandler
import com.intellij.codeInsight.lookup.LookupElement
import com.intellij.codeInsight.completion.InsertionContext
-import com.intellij.psi.filters.position.FilterPattern
import com.intellij.psi.filters.AndFilter
import org.jetbrains.jet.lang.psi.JetValueArgumentName
import com.intellij.psi.filters.position.ParentElementFilter
@@ -46,8 +38,8 @@ import com.intellij.psi.filters.ClassFilter
import org.jetbrains.jet.plugin.util.FirstChildInParentFilter
import org.jetbrains.jet.lang.psi.psiUtil.getCallNameExpression
-public class KotlinNamedParametersContributor : CompletionContributor() {
- private val InNamedParameterFilter = AndFilter(
+object NamedParametersCompletion {
+ private val positionFilter = AndFilter(
LeafElementFilter(JetTokens.IDENTIFIER),
OrFilter(
AndFilter(
@@ -56,26 +48,17 @@ public class KotlinNamedParametersContributor : CompletionContributor() {
),
ParentElementFilter(ClassFilter(javaClass()), 2)
)
- );
+ )
- {
- extend(CompletionType.BASIC,
- PlatformPatterns.psiElement().and(FilterPattern(InNamedParameterFilter)),
- object : CompletionProvider() {
- override fun addCompletions(parameters: CompletionParameters, context: ProcessingContext, result: CompletionResultSet) {
- doParamsCompletion(parameters, result)
- }
- })
- }
+ public fun complete(parameters: CompletionParameters, collector: LookupElementsCollector) {
+ val position = parameters.getPosition()
+ if (!positionFilter.isAcceptable(position, position)) return
- private fun doParamsCompletion(parameters: CompletionParameters, result: CompletionResultSet) {
- val valueArgument = PsiTreeUtil.getParentOfType(parameters.getPosition(), javaClass())!!
+ val valueArgument = PsiTreeUtil.getParentOfType(position, javaClass())!!
val callElement = PsiTreeUtil.getParentOfType(valueArgument, javaClass()) ?: return
val callSimpleName = callElement.getCallNameExpression() ?: return
- val kotlinResultSet = result.addKotlinSorting(parameters)
-
val callReference = callSimpleName.getReference() as JetReference
val functionDescriptors = callReference.resolveToDescriptors().map { it as? FunctionDescriptor }.filterNotNull()
@@ -87,7 +70,7 @@ public class KotlinNamedParametersContributor : CompletionContributor() {
for (parameter in funDescriptor.getValueParameters()) {
val name = parameter.getName().asString()
- if (result.getPrefixMatcher().prefixMatches(name) && name !in usedArguments) {
+ if (name !in usedArguments) {
val lookupElement = LookupElementBuilder.create("$name")
.withPresentableText("$name = ")
.withTailText("${DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(parameter.getType())}")
@@ -96,7 +79,7 @@ public class KotlinNamedParametersContributor : CompletionContributor() {
.assignPriority(ItemPriority.NAMED_PARAMETER)
lookupElement.putUserData(JetCompletionCharFilter.ACCEPT_EQ, true);
- kotlinResultSet.addElement(lookupElement)
+ collector.addElement(lookupElement)
}
}
}