From c3c0bcb1be54c6266bf7d9d042725e9a4b596976 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 9 May 2017 11:24:09 +0200 Subject: [PATCH] Better caret position for new Kotlin file/class #KT-15255 Fixed --- .../kotlin/idea/actions/NewKotlinFileAction.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt index 033883b58e7..d7b65c0d1e2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.actions import com.intellij.ide.actions.CreateFileFromTemplateAction import com.intellij.ide.actions.CreateFileFromTemplateDialog +import com.intellij.ide.actions.CreateFromTemplateAction import com.intellij.ide.fileTemplates.FileTemplate import com.intellij.ide.fileTemplates.FileTemplateManager import com.intellij.ide.fileTemplates.actions.AttributesDefaults @@ -25,6 +26,8 @@ import com.intellij.ide.fileTemplates.ui.CreateFromTemplateDialog import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.actionSystem.LangDataKeys import com.intellij.openapi.actionSystem.PlatformDataKeys +import com.intellij.openapi.editor.LogicalPosition +import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.module.ModuleUtilCore import com.intellij.openapi.project.DumbAware import com.intellij.openapi.project.DumbService @@ -36,6 +39,8 @@ import com.intellij.util.IncorrectOperationException import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.configuration.showConfigureKotlinNotificationIfNeeded +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtNamedDeclaration import java.util.* class NewKotlinFileAction @@ -51,6 +56,19 @@ class NewKotlinFileAction if (module != null) { showConfigureKotlinNotificationIfNeeded(module) } + + if (createdElement is KtFile) { + val ktClass = createdElement.declarations.singleOrNull() as? KtNamedDeclaration + if (ktClass != null) { + CreateFromTemplateAction.moveCaretAfterNameIdentifier(ktClass) + } + else { + val editor = FileEditorManager.getInstance(createdElement.project).selectedTextEditor ?: return + if (editor.document == createdElement.viewProvider.document) { + editor.caretModel.moveToLogicalPosition(LogicalPosition(editor.document.lineCount-1, 0)) + } + } + } } override fun buildDialog(project: Project, directory: PsiDirectory, builder: CreateFileFromTemplateDialog.Builder) {