Разработка плагина Intellij IDEA. Действие «создать класс kotlin»

Я хочу создать плагин для Intellij Idea . Мне нужно добавить действие ( AnAction ), которое создаст class в Kotlin (а не Java) в пользовательском package . У меня есть два quastions:

  • Как создать файлы с нужным расширением?
  • Или как создать файл с class kotlin (из некоторого базового класса) в пользовательском package ?

Один из возможных способов сделать это – использовать PsiFileFactory.createFileFromText() для создания файла Kotlin в памяти, а затем передать этот файл в качестве параметра PsiDirectory.add() чтобы сохранить его в файловой системе.

Хотя ответ yole верен, я хотел бы получить более подробную информацию о классе mistery PsiDirectory.

 //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 //(ie if you post "com.some.package" - it does not create com/some/package folder) PsiDirectory newDirectory = psiDirectory.createSubdirectory(someDirectoryName); 
Intereting Posts
Сочетание результатов нескольких наблюдаемых Что такое java-эквивалент функций функций Котлина? Как использовать selectableButtonBackground на Anko? Kotlin – Незаконное использование обратного вызова встроенного параметра removeAll – изменить список источников Котлин: когда и как следует использовать выражения лямбда kotlin, которая может использовать соединение httpS без проверки сертификата (например, curl – insecure) В kotlin как сделать мгновенную функцию приложения? Как читать и писать txt-файлы в android в kotlin Преобразование реализации Thread / Runnable из Java в Kotlin Можно ли использовать Mockito в Котлине? Метод копирования класса данных Kotlin не выполняет глубокое копирование всех членов Как использовать `filterValues` на вложенной итерации Hashmap в Котлин? Android RecyclerView Обработка данных с использованием Kotlin: индекс переключения строк после модификации Номер Android: синхронные запросы возвращают null