in gdscript/src/main/kotlin/gdscript/codeInsight/GdParameterInfoHandler.kt [67:142]
override fun updateUI(declaration: PsiElement?, context: ParameterInfoUIContext) {
val currentParam = context.currentParameterIndex
var startOffset = -1
var endOffset = -1
val fullSignature = CodeInsightSettings.getInstance().SHOW_FULL_SIGNATURES_IN_PARAMETER_INFO
var isVariadic = false
val builder = StringBuilder()
var ending = ""
val parameters = when(declaration) {
is GdMethodDeclTl -> {
if (fullSignature) {
builder.append("func ${declaration.name}(")
ending = ")"
if (declaration.returnType.isNotBlank()) ending += " -> ${declaration.returnType}"
}
isVariadic = declaration.isVariadic
declaration.parameters
}
is GdFuncDeclEx -> {
if (fullSignature) {
builder.append("func ${declaration.funcDeclIdNmi?.text ?: ""}(")
ending = ")"
if (declaration.returnType.isNotBlank()) ending += " -> ${declaration.returnType}"
}
declaration.parameters
}
is GdAnnotationTl -> {
val specification = GdAnnotationUtil.get(declaration)
if (fullSignature) {
builder.append("${declaration.annotationType.text}(")
ending = ")"
}
isVariadic = specification?.variadic ?: false
specification?.parameters ?: emptyMap<String, String>()
}
else -> emptyMap<String, String>()
}
var i = 0
parameters.forEach {
if (i > 0) {
builder.append(", ")
}
val start = builder.length
builder.append("${it.key}: ${it.value}")
if (currentParam == i) {
startOffset = start
endOffset = builder.length
}
i += 1
}
if (i <= 0) {
if (isVariadic) {
repeat(currentParam) {
builder.append("$it, ")
}
builder.append("vararg")
} else {
builder.append("no parameters")
}
}
builder.append(ending)
context.setupUIComponentPresentation(
builder.toString(),
startOffset,
endOffset,
false,
false,
false,
context.defaultParameterColor,
)
}