From 3831ff1d05d63e8733a7c655af03c25e26d976c0 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 6 Sep 2018 17:18:13 +0300 Subject: [PATCH] Apply Kotlin official code style for projects created from wizards (KT-23400) - Kotlin templates - New Java projects with Kotlin support - Gradle projects with Kotlin support - Gradle projects with Kotlin DSL --- .../GradleKotlinFrameworkSupportProvider.kt | 7 +++++++ ...tlinDslGradleKotlinFrameworkSupportProvider.kt | 7 +++++++ .../framework/JavaFrameworkSupportProvider.kt | 6 ++++++ .../idea/framework/KotlinModuleSettingStep.java | 11 ++++++++++- .../FrameworkSupportInModuleProviderUtil.kt | 15 +++++++++++++++ 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 idea/src/org/jetbrains/kotlin/idea/framework/FrameworkSupportInModuleProviderUtil.kt diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt index 94e387b9ef9..d56b04973d8 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt @@ -26,6 +26,9 @@ import com.intellij.openapi.roots.ModifiableModelsProvider import com.intellij.openapi.roots.ModifiableRootModel import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.core.platform.impl.CommonIdePlatformKindTooling.MAVEN_COMMON_STDLIB_ID +import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle +import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter +import org.jetbrains.kotlin.idea.framework.isInNewProject import org.jetbrains.kotlin.idea.versions.* import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder import org.jetbrains.plugins.gradle.frameworkSupport.GradleFrameworkSupportProvider @@ -125,6 +128,10 @@ abstract class GradleKotlinFrameworkSupportProvider( } else { buildScriptData.addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH) } + + if (isInNewProject(module)) { + ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE) + } } protected open fun updateSettingsScript(settingsBuilder: SettingsScriptBuilder, specifyPluginVersionIfNeeded: Boolean) { } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt index 6a8e85a4552..c56b45ae076 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt @@ -27,6 +27,9 @@ import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.configuration.KotlinBuildScriptManipulator.Companion.GSK_KOTLIN_VERSION_PROPERTY_NAME import org.jetbrains.kotlin.idea.configuration.KotlinBuildScriptManipulator.Companion.getKotlinGradlePluginClassPathSnippet import org.jetbrains.kotlin.idea.configuration.KotlinBuildScriptManipulator.Companion.getKotlinModuleDependencySnippet +import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle +import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter +import org.jetbrains.kotlin.idea.framework.isInNewProject import org.jetbrains.kotlin.idea.versions.* import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder import org.jetbrains.plugins.gradle.frameworkSupport.KotlinDslGradleFrameworkSupportProvider @@ -95,6 +98,10 @@ abstract class KotlinDslGradleKotlinFrameworkSupportProvider( } buildScriptData.addRepositoriesDefinition("mavenCentral()") + + if (isInNewProject(module)) { + ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE) + } } private fun RepositoryDescription.toKotlinRepositorySnippet() = "maven { setUrl(\"$url\") }" diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt index 062f6d5d548..59a5962a686 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt @@ -18,6 +18,8 @@ import com.intellij.openapi.roots.ui.configuration.FacetsProvider import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription import org.jetbrains.kotlin.idea.configuration.BuildSystemType import org.jetbrains.kotlin.idea.configuration.getBuildSystemType +import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle +import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter import javax.swing.JComponent class JavaFrameworkSupportProvider : FrameworkSupportInModuleProvider() { @@ -46,6 +48,10 @@ class JavaFrameworkSupportProvider : FrameworkSupportInModuleProvider() { "Kotlin/\u200BJS") description!!.finishLibConfiguration(module, rootModel, false) + + if (isInNewProject(module)) { + ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE) + } } override fun onFrameworkSelectionChanged(selected: Boolean) { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleSettingStep.java b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleSettingStep.java index 2619d3bbe1b..62f1f3e47cf 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleSettingStep.java +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleSettingStep.java @@ -20,7 +20,10 @@ import com.intellij.CommonBundle; import com.intellij.facet.impl.ui.libraries.LibraryCompositionSettings; import com.intellij.facet.impl.ui.libraries.LibraryOptionsPanel; import com.intellij.framework.library.FrameworkLibraryVersionFilter; -import com.intellij.ide.util.projectWizard.*; +import com.intellij.ide.util.projectWizard.ModuleBuilder; +import com.intellij.ide.util.projectWizard.ModuleWizardStep; +import com.intellij.ide.util.projectWizard.SettingsStep; +import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.JavaModuleType; import com.intellij.openapi.module.Module; @@ -41,6 +44,8 @@ import kotlin.collections.ArraysKt; import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle; +import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter; import org.jetbrains.kotlin.js.resolve.JsPlatform; import org.jetbrains.kotlin.resolve.TargetPlatform; import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform; @@ -107,6 +112,10 @@ public class KotlinModuleSettingStep extends ModuleWizardStep { ((CustomLibraryDescriptorWithDeferredConfig) customLibraryDescription).finishLibConfiguration(module, rootModel, isNewProject); } } + + if (isNewProject) { + ProjectCodeStyleImporter.INSTANCE.apply(module.getProject(), KotlinStyleGuideCodeStyle.Companion.getINSTANCE()); + } } }; } diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/FrameworkSupportInModuleProviderUtil.kt b/idea/src/org/jetbrains/kotlin/idea/framework/FrameworkSupportInModuleProviderUtil.kt new file mode 100644 index 00000000000..143040415fb --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/framework/FrameworkSupportInModuleProviderUtil.kt @@ -0,0 +1,15 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.framework + +import com.intellij.framework.addSupport.FrameworkSupportInModuleProvider +import com.intellij.openapi.module.Module +import org.jetbrains.kotlin.idea.util.projectStructure.allModules + +@Suppress("unused") +fun FrameworkSupportInModuleProvider.isInNewProject(module: Module): Boolean { + return module.project.allModules().isEmpty() +} \ No newline at end of file