Как получить KtClass из PsiElement или VirtualFile? - PullRequest
1 голос
/ 05 марта 2020

Я хочу создать плагин, который генерирует некоторый код шаблона для определенных файлов c kotlin. Теперь мне нужно получить KtClass из PsiElement или VirtualFile. Я попробовал некоторый код, как показано ниже, но он не работает.

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, я не не знаю, какой из них мне следует использовать

...