Order properties before keywords

This commit is contained in:
Nikolay Krasko
2013-09-16 14:25:35 +04:00
parent b0acf758bc
commit c2ca8b618d
6 changed files with 35 additions and 9 deletions
-3
View File
@@ -273,9 +273,6 @@
<inspection_tool class="ObsoleteCollection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreRequiredObsoleteCollectionTypes" value="false" />
</inspection_tool>
<inspection_tool class="PointlessArithmeticExpression" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreExpressionsContainingConstants" value="true" />
</inspection_tool>
<inspection_tool class="ProtectedMemberInFinalClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PublicFieldAccessedInSynchronizedContext" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PyCompatibilityInspection" enabled="true" level="ERROR" enabled_by_default="true">
@@ -24,7 +24,7 @@ import org.jetbrains.jet.lang.psi.JetFile
public fun CompletionResultSet.addJetSorting(parameters : CompletionParameters) : CompletionResultSet {
var sorter = CompletionSorter.defaultSorter(parameters, getPrefixMatcher())!!
sorter = sorter.weighBefore("stats", JetLocalPreferableWeigher())
sorter = sorter.weighBefore("stats", JetKindWeigher())
sorter = sorter.weighAfter(
"stats",
@@ -21,17 +21,19 @@ import com.intellij.codeInsight.lookup.LookupElementWeigher;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
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;
class JetLocalPreferableWeigher extends LookupElementWeigher {
JetLocalPreferableWeigher() {
super("JetLocalElementWeigher");
class JetKindWeigher extends LookupElementWeigher {
JetKindWeigher() {
super(JetKindWeigher.class.getSimpleName());
}
private enum MyResult {
localOrParameter,
property,
probableKeyword,
normal,
packages
@@ -48,7 +50,10 @@ class JetLocalPreferableWeigher extends LookupElementWeigher {
if (descriptor instanceof LocalVariableDescriptor || descriptor instanceof ValueParameterDescriptor) {
return MyResult.localOrParameter;
}
if (descriptor instanceof NamespaceDescriptor) {
else if (descriptor instanceof PropertyDescriptor) {
return MyResult.property;
}
else if (descriptor instanceof NamespaceDescriptor) {
return MyResult.packages;
}
}
@@ -7,6 +7,6 @@ val some = foo<caret>
// "foo" is before other elements because of exact prefix match
// ORDER: foo, fooLocal, fooVar, fooImported, fooNotImported
// ORDER: foo, fooVar, fooLocal, fooImported, fooNotImported
// NUMBER: 2
// SELECTED: 1
@@ -0,0 +1,19 @@
val br1 = 11
fun br() = 111
class Test(val br2 = 12) {
val br3 = 13
fun brf() = 112
fun test(br4: Int) {
val br5 = 14
br<caret>
}
}
// "br" function is before other elements because of exact prefix match
// ORDER: br, br4, br5, br1, br2, br3, break, brf
// SELECTED: 1
@@ -66,6 +66,11 @@ public class CompletionWeigherTestGenerated extends AbstractCompletionWeigherTes
doTest("idea/testData/completion/weighers/ParametersBeforeKeywords.kt");
}
@TestMetadata("PropertiesBeforeKeywords.kt")
public void testPropertiesBeforeKeywords() throws Exception {
doTest("idea/testData/completion/weighers/PropertiesBeforeKeywords.kt");
}
@TestMetadata("TemplatesAndKeywordsLast.kt")
public void testTemplatesAndKeywordsLast() throws Exception {
doTest("idea/testData/completion/weighers/TemplatesAndKeywordsLast.kt");