![](/img/trans.png)
[英]Getting weird bugs when trying to update to Kotlin 1.4.0. How to make it work with Gradle and IntelliJ IDEA 2020.2.1?
[英]Make Intellij Idea plugin work with Kotlin files
我創建了這個非常簡單的Intellij Idea插件 ,它可以折疊一些參考表達式。 它適用於Java文件,但不適用於Kotlin。
這是源代碼: https : //github.com/nodes-android/nstack-translation-folding 。
我將在這里包括重要部分:
plugin.xml中
</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()
}
}
我的問題是,對於Kotlin文件, 根本不調用buildFoldRegions() 。
當然,這對於Kotlin不起作用,因為您
如果(根!是PsiJavaFile){返回FoldingDescriptor.EMPTY}
對於kotlin文件,該文件是org.jetbrains.kotlin.psi.KtFile
實例,而不是PsiJavaFile
更新:
您可以在這里https://github.com/aristotll/nstack-translation-folding/commit/45286e6ec10d3b50defe25d55f8fbd8f122a148b看到我的提交。
就我而言,向項目添加kotlin-compiler
庫解決了缺少KtFile
和其他與Kotlin Psi相關的類的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.