From c2ca8b618def09e3344af7b2b537177462b2b6c3 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 16 Sep 2013 14:25:35 +0400 Subject: [PATCH] Order properties before keywords --- .idea/inspectionProfiles/idea_default.xml | 3 --- .../weigher/JetCompletionSorting.kt | 2 +- ...erableWeigher.java => JetKindWeigher.java} | 13 +++++++++---- .../weighers/LocalFileBeforeImported.kt | 2 +- .../weighers/PropertiesBeforeKeywords.kt | 19 +++++++++++++++++++ .../CompletionWeigherTestGenerated.java | 5 +++++ 6 files changed, 35 insertions(+), 9 deletions(-) rename idea/src/org/jetbrains/jet/plugin/completion/weigher/{JetLocalPreferableWeigher.java => JetKindWeigher.java} (83%) create mode 100644 idea/testData/completion/weighers/PropertiesBeforeKeywords.kt diff --git a/.idea/inspectionProfiles/idea_default.xml b/.idea/inspectionProfiles/idea_default.xml index 94e14cf6c58..fd058a78b5b 100644 --- a/.idea/inspectionProfiles/idea_default.xml +++ b/.idea/inspectionProfiles/idea_default.xml @@ -273,9 +273,6 @@ - - diff --git a/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetCompletionSorting.kt b/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetCompletionSorting.kt index 683f47daa22..dee6ddb1bf8 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetCompletionSorting.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetCompletionSorting.kt @@ -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", diff --git a/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetLocalPreferableWeigher.java b/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java similarity index 83% rename from idea/src/org/jetbrains/jet/plugin/completion/weigher/JetLocalPreferableWeigher.java rename to idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java index bbe7ab2b570..b1485a6a7d8 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetLocalPreferableWeigher.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java @@ -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; } } diff --git a/idea/testData/completion/weighers/LocalFileBeforeImported.kt b/idea/testData/completion/weighers/LocalFileBeforeImported.kt index 571a2857d59..331485d51fe 100644 --- a/idea/testData/completion/weighers/LocalFileBeforeImported.kt +++ b/idea/testData/completion/weighers/LocalFileBeforeImported.kt @@ -7,6 +7,6 @@ val some = foo // "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 \ No newline at end of file diff --git a/idea/testData/completion/weighers/PropertiesBeforeKeywords.kt b/idea/testData/completion/weighers/PropertiesBeforeKeywords.kt new file mode 100644 index 00000000000..a360f96e3e5 --- /dev/null +++ b/idea/testData/completion/weighers/PropertiesBeforeKeywords.kt @@ -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 + } +} + +// "br" function is before other elements because of exact prefix match + +// ORDER: br, br4, br5, br1, br2, br3, break, brf +// SELECTED: 1 \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/completion/weighers/CompletionWeigherTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/weighers/CompletionWeigherTestGenerated.java index a61ed488e4e..bf48501f4db 100644 --- a/idea/tests/org/jetbrains/jet/completion/weighers/CompletionWeigherTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/weighers/CompletionWeigherTestGenerated.java @@ -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");