diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index 29774b0e441..04cdf4e7095 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -62,7 +62,7 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess protected val prefixMatcher: PrefixMatcher = this.resultSet.getPrefixMatcher() - protected val collector: LookupElementsCollector = LookupElementsCollector(prefixMatcher, resolveSession) + protected val collector: LookupElementsCollector = LookupElementsCollector(prefixMatcher, parameters, resolveSession) protected val project: Project = position.getProject() diff --git a/idea/src/org/jetbrains/jet/plugin/completion/KotlinCompletionCharFilter.kt b/idea/src/org/jetbrains/jet/plugin/completion/KotlinCompletionCharFilter.kt index 5747b8bda9b..4d44dde37f5 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/KotlinCompletionCharFilter.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/KotlinCompletionCharFilter.kt @@ -27,7 +27,7 @@ public class KotlinCompletionCharFilter() : CharFilter() { class object { public val ACCEPT_OPENING_BRACE: Key = Key("KotlinCompletionCharFilter.ACCEPT_OPENNING_BRACE") - public val SELECTED_ITEM_PREFIX: Key = Key("KotlinCompletionCharFilter.SELECTED_ITEM_PREFIX") + public val JUST_TYPING_PREFIX: Key = Key("KotlinCompletionCharFilter.JUST_TYPING_PREFIX") } override fun acceptChar(c : Char, prefixLength : Int, lookup : Lookup) : Result? { @@ -39,7 +39,9 @@ public class KotlinCompletionCharFilter() : CharFilter() { } val currentItem = lookup.getCurrentItem() - currentItem?.putUserData(SELECTED_ITEM_PREFIX, lookup.itemPattern(currentItem)) + if (!lookup.isSelectionTouched()) { + currentItem?.putUserData(JUST_TYPING_PREFIX, lookup.itemPattern(currentItem)) + } return when (c) { '.' -> { diff --git a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt index f932e647ac6..89887faa0cc 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt @@ -29,8 +29,13 @@ import java.util.ArrayList import com.intellij.codeInsight.completion.CompletionResultSet import org.jetbrains.jet.lang.descriptors.FunctionDescriptor import com.intellij.openapi.util.TextRange +import com.intellij.codeInsight.completion.CompletionParameters -class LookupElementsCollector(private val prefixMatcher: PrefixMatcher, private val resolveSession: ResolveSessionForBodies) { +class LookupElementsCollector( + private val prefixMatcher: PrefixMatcher, + private val completionParameters: CompletionParameters, + private val resolveSession: ResolveSessionForBodies +) { private val elements = ArrayList() public fun flushToResultSet(resultSet: CompletionResultSet) { @@ -109,8 +114,9 @@ class LookupElementsCollector(private val prefixMatcher: PrefixMatcher, private // used to avoid insertion of spaces before/after ',', '=' on just typing private fun isJustTyping(context: InsertionContext, element: LookupElement): Boolean { + if (!completionParameters.isAutoPopup()) return false val insertedText = context.getDocument().getText(TextRange(context.getStartOffset(), context.getTailOffset())) - return insertedText == element.getUserData(KotlinCompletionCharFilter.SELECTED_ITEM_PREFIX) + return insertedText == element.getUserData(KotlinCompletionCharFilter.JUST_TYPING_PREFIX) } public fun addElementWithAutoInsertionSuppressed(element: LookupElement) { diff --git a/idea/testData/completion/handlers/charFilter/Comma5.kt b/idea/testData/completion/handlers/charFilter/Comma5.kt index 18f6b30bdb8..75237d43aeb 100644 --- a/idea/testData/completion/handlers/charFilter/Comma5.kt +++ b/idea/testData/completion/handlers/charFilter/Comma5.kt @@ -4,5 +4,6 @@ fun bar(nullable: Int?) { foo(null) } +// INVOCATION_COUNT: 0 // ELEMENT: * // CHAR: ',' diff --git a/idea/testData/completion/handlers/charFilter/Comma5.kt.after b/idea/testData/completion/handlers/charFilter/Comma5.kt.after index cada5433646..0d1b68f7fcc 100644 --- a/idea/testData/completion/handlers/charFilter/Comma5.kt.after +++ b/idea/testData/completion/handlers/charFilter/Comma5.kt.after @@ -4,5 +4,6 @@ fun bar(nullable: Int?) { foo(null,) } +// INVOCATION_COUNT: 0 // ELEMENT: * // CHAR: ','