【问题标题】:How to get KtClass from PsiElement or VirtualFile?如何从 PsiElement 或 VirtualFile 获取 KtClass?
【发布时间】:2020-03-05 05:31:25
【问题描述】:

我想制作一个插件,为某些特定的 kotlin 文件生成一些模板代码。现在我需要从 PsiElement 或 VirtualFile 获取 KtClass。我尝试了一些代码如下,但它不起作用。

val psiFile = e.getData(CommonDataKeys.PSI_FILE)
        psiFile ?: return
        val editor = e.getData(CommonDataKeys.EDITOR)
        editor ?: return
        println(psiFile.name)
        val pe = psiFile.findElementAt(editor.caretModel.offset)
        if (pe != null) {
            println(pe.text)
        } else {
            println("PE is null")
        }
        val kt = PsiTreeUtil.getParentOfType(pe, KtClass::class.java)
        kt?.run {
            println(this.text)
        }

PS:我发现有2个PsiTreeUtils,一个来自org.jetbrains.kotlin.com.intellij.psi.util包,一个来自com.intellij.psi.util,不知道该用哪个

【问题讨论】:

    标签: intellij-plugin intellij-platform-psi


    【解决方案1】:

    一个 PsiFile 可能包含零个或多个 KtClasss。你可以通过这样做来获得它们:

    val classes = psiFile.getChildrenOfType<KtClass>().asList()

    【讨论】:

      猜你喜欢
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多