From a0ab7f6f22313ec4f3a2fad60b7849a12c68290e Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 11 Mar 2014 19:56:24 +0400 Subject: [PATCH] Add utility function for Kotlin file creation --- .../plugin/refactoring/jetRefactoringUtil.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/jetRefactoringUtil.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/jetRefactoringUtil.kt index ec5fbdd482a..8ea27c4c485 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/jetRefactoringUtil.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/jetRefactoringUtil.kt @@ -26,6 +26,13 @@ import org.jetbrains.jet.lang.psi.JetUserType import org.jetbrains.jet.lang.resolve.name.isOneSegmentFQN import com.intellij.psi.PsiElement import com.intellij.openapi.util.Key +import com.intellij.psi.PsiDirectory +import org.jetbrains.jet.lang.psi.JetFile +import com.intellij.psi.PsiFile +import org.jetbrains.jet.plugin.JetFileType +import org.jetbrains.jet.lang.psi.psiUtil.getPackage +import com.intellij.psi.PsiFileFactory +import java.lang.annotation.Target /** * Replace [[JetSimpleNameExpression]] (and its enclosing qualifier) with qualified element given by FqName @@ -56,4 +63,15 @@ fun PsiElement.getAndRemoveCopyableUserData(key: Key): T? { val data = getCopyableUserData(key) putCopyableUserData(key, null) return data +} + +fun createKotlinFile(fileName: String, targetDir: PsiDirectory): JetFile { + val packageName = targetDir.getPackage()?.getQualifiedName() + + targetDir.checkCreateFile(fileName) + val file = PsiFileFactory.getInstance(targetDir.getProject())!!.createFileFromText( + fileName, JetFileType.INSTANCE, if (packageName != null) "package $packageName \n\n" else "" + ) + + return targetDir.add(file) as JetFile } \ No newline at end of file