Haga que el complemento Intellij Idea funcione con los files de Kotlin
Creé este plugin Intellij Idea muy simple que dobla algunas expresiones de reference. Funciona muy bien para los files Java, pero no funciona para Kotlin.
Aquí está la fuente: https://github.com/nodes-android/nstack-translation-folding .
Incluiré aquí las partes importantes:
plugin.xml
- Kotlin: UnsupportedOperationException para el genérico reificado con el operador get / set
- El cliente de Bluetooth Socket recibe la misma exception cada vez
- Kotlin kapt y construcción de componentes Android architecture fallan
- Evaluación dinámica de cadenas con plantilla en Kotlin
- Kotlin JS - Acceso a las properties HTML DOM
</idea-plugin> <depends>com.intellij.modules.all</depends> <application-components> <component> <implementation-class>com.nodes.folding.TranslationFoldingBuilder</implementation-class> </component> </application-components> <extensions defaultExtensionNs="com.intellij"> <lang.foldingBuilder language="JAVA" implementationClass="com.nodes.folding.TranslationFoldingBuilder"/> </extensions> </idea-plugin>
TranslationFoldingBuilder.kt
class TranslationFoldingBuilder : FoldingBuilderEx() { override fun buildFoldRegions(root: PsiElement, document: Document, quick: Boolean): Array<FoldingDescriptor> { if (root !is PsiJavaFile) { return FoldingDescriptor.EMPTY } val descriptors = ArrayList<FoldingDescriptor>() // Get all the reference expressions in this Java file val referenceExpressions = PsiTreeUtil.findChildrenOfType(root, PsiReferenceExpression::class.java) // Some logic return descriptors.toTypedArray() } }
Mi problema es que para los files de Kotlin, buildFoldRegions () no se llama en absoluto.
- Las classs de datos de Kotlin contienen funciones abiertas
- Kotlin: ¿Cómo puedo llamar a la function de extensión de super?
- Migración de Groovy gradle a Kotlin gradle (falta extensión o conversión de cierre, no estoy seguro)
- No puedo usar Kotlin para Serenity-bdd
- ¿Llamar a super en el constructor y asignar un campo en Kotlin?
- Cómo regresar desde el tipo de function Kotlin
- JobScheduling periódico no funciona
- ¿Cómo modificar un prefijo de una secuencia de Kotlin pero retener la queue?
Por supuesto, no funcionará para kotlin, ya que su
if (root! es PsiJavaFile) {return FoldingDescriptor.EMPTY}
Para los files de kotlin, el file es org.jetbrains.kotlin.psi.KtFile
instancia, en lugar de PsiJavaFile
Actualizar:
- Necesita agregar el complemento de Kotlin como la dependencia de su complemento en plugin.xml
- La API api de Kotlin no es lo mismo que Java (Son idiomas diferentes). Necesitas escribir una class diferente (pero algunas pueden ser iguales, solo copio tu código de origen y lo edito para que haya algún duplicado en mi implementación de kt).
Puedes ver mi confirmación aquí https://github.com/aristotll/nstack-translation-folding/commit/45286e6ec10d3b50defe25d55f8fbd8f122a148b .
- biblioteca kotlin que puede hacer connection httpS sin verificación de certificate (como curl –insecure)
- Error de informe de IntelliJ corriendo por un file no encontrado en un module que creé