override fun updateUI()

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,
        )
    }