Fix inserting variable name suggestion on non-enter char typing

#KT-21933 fixed
This commit is contained in:
Simon Ogorodnik
2018-03-02 20:07:32 +03:00
parent d5d9aa0329
commit 48fb3db7ba
9 changed files with 82 additions and 10 deletions
@@ -501,11 +501,6 @@ class BasicCompletionSession(
})
collector.restartCompletionOnPrefixChange(prefixPattern)
collector.addLookupElementPostProcessor { lookupElement ->
lookupElement.putUserData(KotlinCompletionCharFilter.HIDE_LOOKUP_ON_COLON, Unit)
lookupElement
}
variableNameAndTypeCompletion.addFromParametersInFile(position, resolutionFacade, isVisibleFilterCheckAlways)
flushToResultSet()
@@ -694,11 +689,6 @@ class BasicCompletionSession(
})
collector.restartCompletionOnPrefixChange(prefixPattern)
collector.addLookupElementPostProcessor { lookupElement ->
lookupElement.putUserData(KotlinCompletionCharFilter.HIDE_LOOKUP_ON_COLON, Unit)
lookupElement
}
parameterNameAndTypeCompletion.addFromParametersInFile(position, resolutionFacade, isVisibleFilterCheckAlways)
flushToResultSet()
@@ -194,6 +194,10 @@ class VariableOrParameterNameWithTypeCompletion(
fun create(parameterName: String, type: Type, shouldInsertType: Boolean, factory: BasicLookupElementFactory): LookupElement? {
val typeLookupElement = type.createTypeLookupElement(factory) ?: return null
val lookupElement = MyLookupElement(parameterName, type, typeLookupElement, shouldInsertType)
if (!shouldInsertType) {
lookupElement.putUserData(KotlinCompletionCharFilter.SUPPRESS_ITEM_SELECTION_BY_CHARS_ON_TYPING, Unit)
}
lookupElement.putUserData(KotlinCompletionCharFilter.HIDE_LOOKUP_ON_COLON, Unit)
return lookupElement.suppressAutoInsertion()
}
}
@@ -0,0 +1,10 @@
class Clz
fun foo() {
val cl<caret>
}
// INVOCATION_COUNT: 0
// ELEMENT_TEXT: clz
// CHAR: ' '
@@ -0,0 +1,10 @@
class Clz
fun foo() {
val cl <caret>
}
// INVOCATION_COUNT: 0
// ELEMENT_TEXT: clz
// CHAR: ' '
@@ -0,0 +1,10 @@
class Clz
fun foo() {
val cl<caret>
}
// INVOCATION_COUNT: 0
// ELEMENT_TEXT: clz
// CHAR: ':'
@@ -0,0 +1,10 @@
class Clz
fun foo() {
val cl:<caret>
}
// INVOCATION_COUNT: 0
// ELEMENT_TEXT: clz
// CHAR: ':'
@@ -0,0 +1,10 @@
class Clz
fun foo() {
val cl<caret>
}
// INVOCATION_COUNT: 0
// ELEMENT_TEXT: clz
// CHAR: '='
@@ -0,0 +1,10 @@
class Clz
fun foo() {
val cl=<caret>
}
// INVOCATION_COUNT: 0
// ELEMENT_TEXT: clz
// CHAR: '='
@@ -192,4 +192,22 @@ public class CompletionCharFilterTestGenerated extends AbstractCompletionCharFil
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/charFilter/Space.kt");
doTest(fileName);
}
@TestMetadata("VariableName.kt")
public void testVariableName() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/charFilter/VariableName.kt");
doTest(fileName);
}
@TestMetadata("VariableName2.kt")
public void testVariableName2() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/charFilter/VariableName2.kt");
doTest(fileName);
}
@TestMetadata("VariableName3.kt")
public void testVariableName3() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/charFilter/VariableName3.kt");
doTest(fileName);
}
}