当前位置: 首页 > 知识库问答 >
问题:

使Intellij Idea插件与Kotlin文件一起工作

潘俊楚
2023-03-14
</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()。

共有1个答案

颜修真
2023-03-14

当然这对科特林不起作用,因为你的

如果(root!是PsiJavaFile){return foldingdescriptor.empty}

对于kotlin文件,文件是org.jetbrains.kotlin.psi.ktfile实例,而不是psijavafile

更新:

  1. 您需要在plugin.xml中添加kotlin插件作为插件的依赖项
  2. Kotlin的psi api与Java不同(它们是不同的语言)。您需要编写一个不同的类(但有些类可能是相同的,我只是复制您的原始代码并进行编辑,所以在我的kt实现中有一些重复。

您可以在这里看到我的提交https://github.com/aristotll/nstack-translation-folding/commit/45286e6ec10d3b50defe25d55f8fbd8f122a148b。

 类似资料:
  • 我想将我的基于vertx的项目移到https://github.com/sczyh30/vertx-blueprint-microservice.git模板。blueprint项目使用annotations@vertxgen等在编译期间生成代码。

  • 当我创建RoboVM Eclipse项目时,Eclipse给了我一个例外: 同样,当我尝试转到“设置”>“RoboVM”时,我也会得到这样的消息:

  • 但随后构建完全失败,就好像它完全停止识别Java一样。我遇到了许多错误,例如: 这是否意味着Mojo的AspectJ Maven插件不支持JDK9+?我很感激你能帮我解决这个问题。

  • 我正在尝试用文件键上传一个HEIC文件。我应该指定哪种文件类型? 现在我有这个: 我在文件里找不到任何关于这个的东西,我的实验也不起作用。 下面是我试图上传的测试文件: https://github.com/tigranbs/test-heic-images/raw/master/image1.heic

  • 我在尝试构建项目时遇到以下错误。唯一的区别是gradle脚本是在Kotlin DSL中。 下面是我的整个build.gradle.kts文件 https://gist.github.com/nksaroj/483f3f07df8e04c72040ea4c055459d6 或者 https://github.com/nksaroj/xDemo 是完整的项目。

  • 问题内容: 我正在尝试使用Text Finder插件编写jenkinsfile ,但我不知道它是如何工作的。 这是我的代码: 问题答案: 正如@mghicks已经提到的,并不是每个插件都支持Jenkins管道。在这种情况下,Text Finder插件不支持它。例如,您可以为此编写自己的groovy函数: 例如: 我们正在调用filterLogs函数,并提供参数“ ERROR”(在您的日志中搜索ER