Completion: more intuitive presentation of function items that insert lambda

This commit is contained in:
Valentin Kipyatkov
2015-07-06 22:04:59 +03:00
parent 88dd86d603
commit 1f79955275
6 changed files with 16 additions and 10 deletions
@@ -169,11 +169,20 @@ public class LookupElementFactory(
} }
var element = LookupElementBuilder.create(lookupObject, name) var element = LookupElementBuilder.create(lookupObject, name)
val insertHandler = getDefaultInsertHandler(descriptor)
element = element.withInsertHandler(insertHandler)
when (descriptor) { when (descriptor) {
is FunctionDescriptor -> { is FunctionDescriptor -> {
val returnType = descriptor.getReturnType() val returnType = descriptor.getReturnType()
element = element.withTypeText(if (returnType != null) DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(returnType) else "") element = element.withTypeText(if (returnType != null) DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(returnType) else "")
element = element.appendTailText(DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderFunctionParameters(descriptor), false)
val insertsLambda = (insertHandler as KotlinFunctionInsertHandler).lambdaInfo != null
if (insertsLambda) {
element = element.appendTailText(" {...} ", false)
}
element = element.appendTailText(DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderFunctionParameters(descriptor), insertsLambda)
} }
is VariableDescriptor -> { is VariableDescriptor -> {
@@ -232,9 +241,6 @@ public class LookupElementFactory(
element = element.withStrikeoutness(true) element = element.withStrikeoutness(true)
} }
val insertHandler = getDefaultInsertHandler(descriptor)
element = element.withInsertHandler(insertHandler)
if (insertHandler is KotlinFunctionInsertHandler && insertHandler.lambdaInfo != null) { if (insertHandler is KotlinFunctionInsertHandler && insertHandler.lambdaInfo != null) {
element.putUserData(KotlinCompletionCharFilter.ACCEPT_OPENING_BRACE, Unit) element.putUserData(KotlinCompletionCharFilter.ACCEPT_OPENING_BRACE, Unit)
} }
@@ -1,5 +1,5 @@
fun foo(list: List<String>) { fun foo(list: List<String>) {
list.<caret> list.<caret>
} }
// EXIST: { itemText: "firstOrNull", tailText: "(predicate: (String) -> Boolean) for Iterable<T> in kotlin", typeText: "String?" } // EXIST: { itemText: "firstOrNull", tailText: " {...} (predicate: (String) -> Boolean) for Iterable<T> in kotlin", typeText: "String?" }
// EXIST: { itemText: "toMap", tailText: "(selector: (String) -> K) for Iterable<T> in kotlin", typeText: "Map<K, String>" } // EXIST: { itemText: "toMap", tailText: " {...} (selector: (String) -> K) for Iterable<T> in kotlin", typeText: "Map<K, String>" }
@@ -1,4 +1,4 @@
var a : Runnable = <caret> var a : Runnable = <caret>
// ELEMENT_TEXT: Runnable // ELEMENT_TEXT: Runnable
// TAIL_TEXT: "(function: () -> Unit) (java.lang)" // TAIL_TEXT: " {...} (function: () -> Unit) (java.lang)"
@@ -1,4 +1,4 @@
var a : Runnable = Runnable { <caret> } var a : Runnable = Runnable { <caret> }
// ELEMENT_TEXT: Runnable // ELEMENT_TEXT: Runnable
// TAIL_TEXT: "(function: () -> Unit) (java.lang)" // TAIL_TEXT: " {...} (function: () -> Unit) (java.lang)"
+1 -1
View File
@@ -1,3 +1,3 @@
var a : Runnable = <caret> var a : Runnable = <caret>
// EXIST: {"lookupString":"Runnable", "itemText":"Runnable", "tailText":"(function: () -> Unit) (java.lang)", "typeText":"Runnable"} // EXIST: {"lookupString":"Runnable", "itemText":"Runnable", "tailText":" {...} (function: () -> Unit) (java.lang)", "typeText":"Runnable"}
@@ -2,5 +2,5 @@ fun foo(list: List<String>): Collection<Int> {
return list.<caret> return list.<caret>
} }
// EXIST: { lookupString: "map", tailText: "(transform: (String) -> Int) for Iterable<T> in kotlin", typeText: "List<Int>" } // EXIST: { lookupString: "map", tailText: " {...} (transform: (String) -> Int) for Iterable<T> in kotlin", typeText: "List<Int>" }
// ABSENT: filter // ABSENT: filter