Intellij IDEA 插件开发。操作 "create kotlin class"
Intellij IDEA plugin development. Action "create kotlin class"
我想为 Intellij IDEA 创建一个插件。我需要添加一个操作 (AnAction
),它将在自定义 package
中的 Kotlin(不是 Java)中创建一个 class
.我有两个问题:
- 如何创建具有所需扩展名的文件?
- 或者如何在自定义
package
中使用 Kotlin class
(来自某些基础 class)创建文件?
实现此目的的一种可能方法是使用 PsiFileFactory.createFileFromText()
创建内存中的 Kotlin 文件,然后将该文件作为参数传递给 PsiDirectory.add()
以将其保存到文件系统。
虽然 yole 的回答是正确的,但我想看到更多关于 mistery PsiDirectory 的详细信息 class。
//get directory by VirtualFile
PsiDirectory directory = PsiManager.getInstance(project).findDirectory((getKotlinSourceDir(project))
获取 kotlin 源代码目录:
private VirtualFile getKotlinSourceDir(Project project) {
return project.getBaseDir().findChild("src").findChild("main").findChild("kotlin");
}
并且您可以创建子目录:
//someDirectoryName it is simple name
//(i.e if you post "com.some.package" - it does not create com/some/package folder)
PsiDirectory newDirectory = psiDirectory.createSubdirectory(someDirectoryName);
我想为 Intellij IDEA 创建一个插件。我需要添加一个操作 (AnAction
),它将在自定义 package
中的 Kotlin(不是 Java)中创建一个 class
.我有两个问题:
- 如何创建具有所需扩展名的文件?
- 或者如何在自定义
package
中使用 Kotlinclass
(来自某些基础 class)创建文件?
实现此目的的一种可能方法是使用 PsiFileFactory.createFileFromText()
创建内存中的 Kotlin 文件,然后将该文件作为参数传递给 PsiDirectory.add()
以将其保存到文件系统。
虽然 yole 的回答是正确的,但我想看到更多关于 mistery PsiDirectory 的详细信息 class。
//get directory by VirtualFile
PsiDirectory directory = PsiManager.getInstance(project).findDirectory((getKotlinSourceDir(project))
获取 kotlin 源代码目录:
private VirtualFile getKotlinSourceDir(Project project) {
return project.getBaseDir().findChild("src").findChild("main").findChild("kotlin");
}
并且您可以创建子目录:
//someDirectoryName it is simple name
//(i.e if you post "com.some.package" - it does not create com/some/package folder)
PsiDirectory newDirectory = psiDirectory.createSubdirectory(someDirectoryName);