Completion: more intuitive presentation of function items that insert lambda
This commit is contained in:
+10
-4
@@ -169,11 +169,20 @@ public class LookupElementFactory(
|
||||
}
|
||||
var element = LookupElementBuilder.create(lookupObject, name)
|
||||
|
||||
val insertHandler = getDefaultInsertHandler(descriptor)
|
||||
element = element.withInsertHandler(insertHandler)
|
||||
|
||||
when (descriptor) {
|
||||
is FunctionDescriptor -> {
|
||||
val returnType = descriptor.getReturnType()
|
||||
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 -> {
|
||||
@@ -232,9 +241,6 @@ public class LookupElementFactory(
|
||||
element = element.withStrikeoutness(true)
|
||||
}
|
||||
|
||||
val insertHandler = getDefaultInsertHandler(descriptor)
|
||||
element = element.withInsertHandler(insertHandler)
|
||||
|
||||
if (insertHandler is KotlinFunctionInsertHandler && insertHandler.lambdaInfo != null) {
|
||||
element.putUserData(KotlinCompletionCharFilter.ACCEPT_OPENING_BRACE, Unit)
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fun foo(list: List<String>) {
|
||||
list.<caret>
|
||||
}
|
||||
// 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: "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>" }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var a : Runnable = <caret>
|
||||
|
||||
// ELEMENT_TEXT: Runnable
|
||||
// TAIL_TEXT: "(function: () -> Unit) (java.lang)"
|
||||
// TAIL_TEXT: " {...} (function: () -> Unit) (java.lang)"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var a : Runnable = Runnable { <caret> }
|
||||
|
||||
// ELEMENT_TEXT: Runnable
|
||||
// TAIL_TEXT: "(function: () -> Unit) (java.lang)"
|
||||
// TAIL_TEXT: " {...} (function: () -> Unit) (java.lang)"
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
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>
|
||||
}
|
||||
|
||||
// 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
|
||||
|
||||
Reference in New Issue
Block a user