diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index d25797606a6..063177fa5e7 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -139,7 +139,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration, } } - KeywordCompletion.complete(parameters, prefixMatcher, collector) + KeywordCompletion.complete(parameters, prefixMatcher.getPrefix(), collector) if (completeReference && !shouldRunOnlyTypeCompletion()) { flushToResultSet() diff --git a/idea/src/org/jetbrains/jet/plugin/completion/KeywordCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/KeywordCompletion.kt index 8e51f4bd890..67ffb52b183 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/KeywordCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/KeywordCompletion.kt @@ -35,6 +35,7 @@ import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.PsiComment import org.jetbrains.jet.lexer.JetTokens.* +import com.intellij.openapi.util.text.StringUtil class KeywordLookupObject(val keyword: String) @@ -48,7 +49,7 @@ object KeywordCompletion { private val KEYWORD_TO_DUMMY_POSTFIX = mapOf(OUT_KEYWORD to " X") - public fun complete(parameters: CompletionParameters, prefixMatcher: PrefixMatcher, collector: LookupElementsCollector) { + public fun complete(parameters: CompletionParameters, prefix: String, collector: LookupElementsCollector) { val position = parameters.getPosition() if (!GENERAL_FILTER.isAcceptable(position, position)) return @@ -56,7 +57,7 @@ object KeywordCompletion { val parserFilter = buildFilter(position) for (keywordToken in ALL_KEYWORDS) { val keyword = keywordToken.getValue() - if (prefixMatcher.prefixMatches(keyword) && parserFilter(keywordToken)) { + if (keyword.startsWith(prefix)/* use simple matching by prefix, not prefix matcher from completion*/ && parserFilter(keywordToken)) { val element = LookupElementBuilder.create(KeywordLookupObject(keyword), keyword) .bold() .withInsertHandler(if (keywordToken !in FUNCTION_KEYWORDS) diff --git a/idea/testData/completion/keywords/InModifierListInsideClass.kt b/idea/testData/completion/keywords/InModifierListInsideClass.kt index 1e2eebd8f9a..0cf5eadf31b 100644 --- a/idea/testData/completion/keywords/InModifierListInsideClass.kt +++ b/idea/testData/completion/keywords/InModifierListInsideClass.kt @@ -3,5 +3,5 @@ open class Foo { p val foo = 1 } -// EXIST: private, public, protected, open -// NUMBER: 4 +// EXIST: private, public, protected +// NUMBER: 3 diff --git a/idea/testData/completion/keywords/PrefixMatcher.kt b/idea/testData/completion/keywords/PrefixMatcher.kt new file mode 100644 index 00000000000..c22839fdd3a --- /dev/null +++ b/idea/testData/completion/keywords/PrefixMatcher.kt @@ -0,0 +1,9 @@ +// test that sinple prefix matching is used for keywords + +p + +// EXIST: package +// EXIST: private +// EXIST: protected +// EXIST: public +// NUMBER: 4 diff --git a/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java index 32e94007811..520ae5715f4 100644 --- a/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java @@ -244,6 +244,12 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest(fileName); } + @TestMetadata("PrefixMatcher.kt") + public void testPrefixMatcher() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/PrefixMatcher.kt"); + doTest(fileName); + } + @TestMetadata("PropertyAccessors.kt") public void testPropertyAccessors() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/PropertyAccessors.kt");