From 7ef9a9d6d471a431438f2220df8013b9bce50db4 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 27 Aug 2015 22:45:09 +0300 Subject: [PATCH] Better presentation --- .../kotlin/idea/completion/LookupElementFactory.kt | 14 ++++++++++++-- .../highOrderFunctions/OptionalParameters.kt | 6 +++--- .../highOrderFunctions/OptionalParameters1.kt | 2 +- .../OptionalParameters1.kt.after | 2 +- .../highOrderFunctions/OptionalParameters2.kt | 2 +- .../OptionalParameters2.kt.after | 2 +- 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt index d93f019fd2c..8694f611f7b 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt @@ -129,7 +129,17 @@ class LookupElementFactory( val lambdaPresentation = lambdaPresentation(if (explicitLambdaParameters) parameterType else null) // render only the last parameter because all other should be optional and will be omitted - val parameterPresentation = DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderValueParameters(listOf(descriptor.valueParameters.last()), descriptor.hasSynthesizedParameterNames()) + var parametersRenderer = DescriptorRenderer.SHORT_NAMES_IN_TYPES + if (descriptor.valueParameters.size() > 1) { + parametersRenderer = parametersRenderer.withOptions { + valueParametersHandler = object: DescriptorRenderer.ValueParametersHandler by DescriptorRenderer.ValueParametersHandler.DEFAULT { + override fun appendBeforeValueParameter(parameter: ValueParameterDescriptor, parameterIndex: Int, parameterCount: Int, builder: StringBuilder) { + builder.append("..., ") + } + } + } + } + val parametersPresentation = parametersRenderer.renderValueParameters(listOf(descriptor.valueParameters.last()), descriptor.hasSynthesizedParameterNames()) lookupElement = object : LookupElementDecorator(lookupElement) { override fun renderElement(presentation: LookupElementPresentation) { @@ -137,7 +147,7 @@ class LookupElementFactory( presentation.clearTail() presentation.appendTailText(" $lambdaPresentation ", false) - presentation.appendTailText(parameterPresentation, true) + presentation.appendTailText(parametersPresentation, true) basicFactory.appendContainerAndReceiverInformation(descriptor) { presentation.appendTailText(it, true) } } diff --git a/idea/idea-completion/testData/basic/common/highOrderFunctions/OptionalParameters.kt b/idea/idea-completion/testData/basic/common/highOrderFunctions/OptionalParameters.kt index dcd502a27b5..cf273bf2d73 100644 --- a/idea/idea-completion/testData/basic/common/highOrderFunctions/OptionalParameters.kt +++ b/idea/idea-completion/testData/basic/common/highOrderFunctions/OptionalParameters.kt @@ -10,13 +10,13 @@ fun test(param: () -> Unit) { } // EXIST: { itemText: "xfoo1", tailText: "(option1: String = ..., option2: Int = ..., p: () -> Unit) ()", typeText:"Unit" } -// EXIST: { itemText: "xfoo1", tailText: " {...} (p: () -> Unit) ()", typeText:"Unit" } +// EXIST: { itemText: "xfoo1", tailText: " {...} (..., p: () -> Unit) ()", typeText:"Unit" } // EXIST: { itemText: "xfoo2", tailText: "(option1: String = ..., option2: Int = ..., p: (Int) -> Boolean) ()", typeText:"Unit" } -// EXIST: { itemText: "xfoo2", tailText: " {...} (p: (Int) -> Boolean) ()", typeText:"Unit" } +// EXIST: { itemText: "xfoo2", tailText: " {...} (..., p: (Int) -> Boolean) ()", typeText:"Unit" } // EXIST: { itemText: "xfoo3", tailText: "(option1: String = ..., option2: Int = ..., p: (String, Char) -> Unit) ()", typeText:"Unit" } -// EXIST: { itemText: "xfoo3", tailText: " { String, Char -> ... } (p: (String, Char) -> Unit) ()", typeText:"Unit" } +// EXIST: { itemText: "xfoo3", tailText: " { String, Char -> ... } (..., p: (String, Char) -> Unit) ()", typeText:"Unit" } // EXIST: { itemText: "xfooBad1", tailText: "(option: String = ..., notOption: Int, p: (String, Char) -> Unit) ()", typeText:"Unit" } diff --git a/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters1.kt b/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters1.kt index 9485e46305f..337c51e9654 100644 --- a/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters1.kt +++ b/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters1.kt @@ -5,5 +5,5 @@ fun test(param: () -> Unit) { } // ELEMENT: xfoo -// TAIL_TEXT: " {...} (p: () -> Unit) ()" +// TAIL_TEXT: " {...} (..., p: () -> Unit) ()" diff --git a/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters1.kt.after b/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters1.kt.after index 3286dafef05..02538eff4a8 100644 --- a/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters1.kt.after +++ b/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters1.kt.after @@ -5,5 +5,5 @@ fun test(param: () -> Unit) { } // ELEMENT: xfoo -// TAIL_TEXT: " {...} (p: () -> Unit) ()" +// TAIL_TEXT: " {...} (..., p: () -> Unit) ()" diff --git a/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters2.kt b/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters2.kt index d0c855529b2..0637cd6c79c 100644 --- a/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters2.kt +++ b/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters2.kt @@ -5,5 +5,5 @@ fun test(param: () -> Unit) { } // ELEMENT: xfoo -// TAIL_TEXT: " { String, Int -> ... } (p: (String, Int) -> Unit) ()" +// TAIL_TEXT: " { String, Int -> ... } (..., p: (String, Int) -> Unit) ()" diff --git a/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters2.kt.after b/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters2.kt.after index fe9c3c85bcb..4837460bc53 100644 --- a/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters2.kt.after +++ b/idea/idea-completion/testData/handlers/basic/highOrderFunctions/OptionalParameters2.kt.after @@ -5,5 +5,5 @@ fun test(param: () -> Unit) { } // ELEMENT: xfoo -// TAIL_TEXT: " { String, Int -> ... } (p: (String, Int) -> Unit) ()" +// TAIL_TEXT: " { String, Int -> ... } (..., p: (String, Int) -> Unit) ()"