diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java index ee189c6532f..f86a81a0928 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java @@ -39,7 +39,6 @@ import org.jetbrains.jet.plugin.caches.JetShortNamesCache; import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage; import org.jetbrains.jet.plugin.codeInsight.TipsManager; import org.jetbrains.jet.plugin.completion.smart.SmartCompletion; -import org.jetbrains.jet.plugin.completion.weigher.WeigherPackage; import org.jetbrains.jet.plugin.project.ResolveSessionForBodies; import org.jetbrains.jet.plugin.references.JetSimpleNameReference; @@ -78,7 +77,7 @@ class CompletionSession { // which sometimes works incorrectly for Kotlin result = result.withPrefixMatcher(CompletionUtil.findJavaIdentifierPrefix(parameters)); - result = WeigherPackage.addJetSorting(result, parameters); + result = CompletionPackage.addKotlinSorting(result, parameters); this.jetResult = new JetCompletionResultSet(result, resolveSession, expressionBindingContext, descriptorFilter); } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSorting.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSorting.kt index a64573fd453..ef6ffd79ed4 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSorting.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSorting.kt @@ -60,8 +60,8 @@ private object KindWeigher : LookupElementWeigher("kotlin.kind") { localOrParameter property - probableKeyword - normal + keyword + default packages } @@ -72,12 +72,12 @@ private object KindWeigher : LookupElementWeigher("kotlin.kind") { is LocalVariableDescriptor, is ValueParameterDescriptor -> Weight.localOrParameter is PropertyDescriptor -> Weight.property is PackageViewDescriptor -> Weight.packages - else -> Weight.normal + else -> Weight.default } - is String -> Weight.probableKeyword + is KeywordLookupObject -> Weight.keyword - else -> Weight.normal + else -> Weight.default } } } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.kt b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.kt index 5c3ba069f7b..af0366aa085 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.kt @@ -23,8 +23,6 @@ import com.intellij.psi.filters.position.LeftNeighbour import org.jetbrains.jet.lang.psi.* import org.jetbrains.jet.lexer.JetToken import org.jetbrains.jet.lexer.JetTokens -import com.intellij.codeInsight.completion.CompletionContributor -import com.intellij.codeInsight.completion.CompletionType import com.intellij.codeInsight.lookup.LookupElement import com.intellij.psi.filters.position.SuperParentFilter import com.intellij.psi.util.PsiTreeUtil @@ -42,6 +40,8 @@ import com.intellij.psi.filters.position.FilterPattern import com.intellij.patterns.PlatformPatterns import com.intellij.psi.filters.position.PatternFilter +class KeywordLookupObject(val keyword: String) + public open class JetKeywordCompletionContributor() : CompletionContributor() { { val inTopLevel = notIdentifier(InTopFilter()) @@ -116,7 +116,7 @@ public open class JetKeywordCompletionContributor() : CompletionContributor() { } private fun registerScopeKeywordsCompletion(placeFilter : ElementFilter, keywords : Collection) { - extend(CompletionType.BASIC, getPlacePattern(placeFilter), KeywordsCompletionProvider(keywords.map { it.toString()!! })) + extend(CompletionType.BASIC, getPlacePattern(placeFilter), KeywordsCompletionProvider(keywords.map { it.toString() })) } private inner class BunchKeywordRegister() { @@ -128,11 +128,11 @@ public open class JetKeywordCompletionContributor() : CompletionContributor() { } fun registerAll() { - for (entry in orFiltersToKeywords.entrySet()!!) { + for ((filters, token) in orFiltersToKeywords.entrySet()) { val orFilter = OrFilter() - entry.key.forEach { filter -> orFilter.addFilter(filter) } + filters.forEach { filter -> orFilter.addFilter(filter) } - registerScopeKeywordsCompletion(orFilter, entry.value) + registerScopeKeywordsCompletion(orFilter, token) } } } @@ -232,8 +232,7 @@ public open class JetKeywordCompletionContributor() : CompletionContributor() { private open class InPropertyBodyFilter() : PositionElementFilter() { override fun isAcceptable(element: Any?, context: PsiElement?): Boolean { - if (!(element is PsiElement)) - return false + if (element !is PsiElement) return false val property = PsiTreeUtil.getParentOfType(context, javaClass(), false) return property != null && isAfterName(property, (element as PsiElement)) @@ -269,17 +268,15 @@ public open class JetKeywordCompletionContributor() : CompletionContributor() { private val debugName : String { - debugName = keywords.sort().makeString(separator = ", ") + debugName = keywords.sort().joinToString(separator = ", ") elements = keywords.map { keyword -> - val lookupElementBuilder = LookupElementBuilder.create(keyword).bold() - - if (!JetKeywordCompletionContributor.FUNCTION_KEYWORDS.contains(keyword)) { - lookupElementBuilder.withInsertHandler(JetKeywordCompletionContributor.KEYWORDS_INSERT_HANDLER) - } - else { - lookupElementBuilder.withInsertHandler(JetFunctionInsertHandler.NO_PARAMETERS_HANDLER) - } + LookupElementBuilder.create(KeywordLookupObject(keyword), keyword) + .bold() + .withInsertHandler(if (keyword !in FUNCTION_KEYWORDS) + KEYWORDS_INSERT_HANDLER + else + JetFunctionInsertHandler.NO_PARAMETERS_HANDLER) } }