override fun fillCompletionVariants()

in gdscript/src/main/kotlin/gdscript/completion/GdResourceCompletionContributor.kt [25:55]


    override fun fillCompletionVariants(parameters: CompletionParameters, result: CompletionResultSet) {
        val r = result.withPrefixMatcher(CamelHumpMatcher(
            parameters.position.text.substring(0, parameters.offset - parameters.position.textRange.startOffset),
            true,
        ))

        val position = parameters.position
        if (GdRefIdCompletionUtil.DIRECT_REF.accepts(position)) {
            GdNodeUtil.listNodes(position).forEach { r.addAllElements(it.lookups()) }
        } else if (NODE_PATH_ROOT.accepts(position)) {
            GdNodeUtil.listNodes(position).forEach { r.addAllElements(it.variable_lookups()) }
        } else if (NODE_PATH.accepts(position)) {
            if (GdRefIdCompletionUtil.CLASS_ROOT.accepts(position)) {
                GdNodeUtil.listNodes(position).forEach { r.addAllElements(it.variable_lookups()) }
            } else {
                GdNodeUtil.listNodes(position).forEach { r.addAllElements(it.lookups()) }
            }
        } else if (STRING.accepts(position)) {
            GdFileResIndex.getNonEmptyKeys(position).forEach {
                result.addElement(
                    GdLookup.create(
                        it,
                        priority = GdLookup.BUILT_IN,
                    )
                )
            }
            GdStringCompletionUtil.addInputs(position, result)
            GdStringCompletionUtil.addGroups(position, result)
            GdStringCompletionUtil.addMetas(position, result)
        }
    }