Refactored code

This commit is contained in:
Valentin Kipyatkov
2014-07-29 19:43:06 +04:00
parent 6221de9849
commit 3d523ba325
4 changed files with 8 additions and 17 deletions
@@ -26,6 +26,7 @@ import com.intellij.openapi.util.Key
public open class JetCompletionCharFilter() : CharFilter() {
class object {
public val ACCEPT_OPENING_BRACE: Key<Boolean> = Key<Boolean>("JetCompletionCharFilter.ACCEPT_OPENNING_BRACE")
public val ACCEPT_EQ: Key<Boolean> = Key<Boolean>("JetCompletionCharFilter.ACCEPT_EQ")
}
public override fun acceptChar(c : Char, prefixLength : Int, lookup : Lookup) : Result? {
@@ -47,7 +48,7 @@ public open class JetCompletionCharFilter() : CharFilter() {
if (c == '=') {
val currentItem = lookup.getCurrentItem()
if (currentItem != null && (currentItem.getObject() is KotlinNamedParametersContributor.NamedParameterLookupObject)) {
if (currentItem != null && currentItem.getUserData(ACCEPT_EQ) ?: false) {
return Result.SELECT_ITEM_AND_FINISH_LOOKUP
}
}
@@ -30,7 +30,6 @@ import org.jetbrains.jet.lang.psi.JetCallElement
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.completion.KotlinNamedParametersContributor.NamedParameterLookupObject
import org.jetbrains.jet.plugin.JetIcons
import org.jetbrains.jet.lang.resolve.name.Name
import org.jetbrains.jet.plugin.completion.weigher.addJetSorting
@@ -49,8 +48,6 @@ import org.jetbrains.jet.plugin.util.FirstChildInParentFilter
import org.jetbrains.jet.lang.psi.psiUtil.getCallNameExpression
public class KotlinNamedParametersContributor : CompletionContributor() {
public class NamedParameterLookupObject(val name: Name) {}
private val InNamedParameterFilter = AndFilter(
LeafElementFilter(JetTokens.IDENTIFIER),
OrFilter(
@@ -75,11 +72,8 @@ public class KotlinNamedParametersContributor : CompletionContributor() {
private fun doParamsCompletion(parameters: CompletionParameters, result: CompletionResultSet) {
val valueArgument = PsiTreeUtil.getParentOfType(parameters.getPosition(), javaClass<JetValueArgument>())!!
val callElement = PsiTreeUtil.getParentOfType(valueArgument, javaClass<JetCallElement>())
if (callElement == null) return
val callSimpleName = callElement.getCallNameExpression()
if (callSimpleName == null) return
val callElement = PsiTreeUtil.getParentOfType(valueArgument, javaClass<JetCallElement>()) ?: return
val callSimpleName = callElement.getCallNameExpression() ?: return
val kotlinResultSet = result.addJetSorting(parameters)
@@ -95,12 +89,13 @@ public class KotlinNamedParametersContributor : CompletionContributor() {
for (parameter in funDescriptor.getValueParameters()) {
val name = parameter.getName().asString()
if (result.getPrefixMatcher().prefixMatches(name) && name !in usedArguments) {
val lookupElement = LookupElementBuilder.create(NamedParameterLookupObject(parameter.getName()), "${name}")
.withPresentableText("${name} = ")
val lookupElement = LookupElementBuilder.create("$name")
.withPresentableText("$name = ")
.withTailText("${DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(parameter.getType())}")
.withIcon(JetIcons.PARAMETER)
.withInsertHandler(NamedParameterInsertHandler)
.assignPriority(ItemPriority.NAMED_PARAMETER)
lookupElement.putUserData(JetCompletionCharFilter.ACCEPT_EQ, true);
kotlinResultSet.addElement(lookupElement)
}
@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.LocalVariableDescriptor;
import org.jetbrains.jet.plugin.completion.JetLookupObject;
import org.jetbrains.jet.plugin.completion.KotlinNamedParametersContributor;
class JetKindWeigher extends LookupElementWeigher {
JetKindWeigher() {
@@ -35,7 +34,6 @@ class JetKindWeigher extends LookupElementWeigher {
private enum Weight {
localOrParameter,
property,
namedParameter,
probableKeyword,
normal,
packages
@@ -60,9 +58,6 @@ class JetKindWeigher extends LookupElementWeigher {
}
}
}
else if (object instanceof KotlinNamedParametersContributor.NamedParameterLookupObject) {
return Weight.namedParameter;
}
else if (object instanceof String) {
return Weight.probableKeyword;
}
@@ -22,7 +22,7 @@ import com.intellij.psi.util.PsiTreeUtil
public class FirstChildInParentFilter(val level: Int = 1) : PositionElementFilter() {
override fun isAcceptable(element: Any?, context: PsiElement?): Boolean {
if (!(element is PsiElement)) return false
if (element !is PsiElement) return false
var parent: PsiElement? = element
for (i in 1..level) {