Add information about obsolete code style usage (KT-23400)
This commit is contained in:
+6
@@ -85,8 +85,14 @@ public class KotlinCodeStyleSettings extends CustomCodeStyleSettings {
|
|||||||
return CodeStyleSettingsManager.getSettings(project).getCustomSettings(KotlinCodeStyleSettings.class);
|
return CodeStyleSettingsManager.getSettings(project).getCustomSettings(KotlinCodeStyleSettings.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
|
return cloneSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public KotlinCodeStyleSettings cloneSettings() {
|
||||||
KotlinCodeStyleSettings clone = new KotlinCodeStyleSettings(getContainer());
|
KotlinCodeStyleSettings clone = new KotlinCodeStyleSettings(getContainer());
|
||||||
clone.copyFrom(this);
|
clone.copyFrom(this);
|
||||||
return clone;
|
return clone;
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import com.intellij.internal.statistic.utils.getEnumUsage
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager
|
import com.intellij.psi.codeStyle.CodeStyleSettingsManager
|
||||||
import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings
|
import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings
|
||||||
|
import org.jetbrains.kotlin.idea.formatter.KotlinFormatterUsageCollector.KotlinFormatterKind.*
|
||||||
|
import org.jetbrains.kotlin.idea.util.isDefaultOfficialCodeStyle
|
||||||
|
|
||||||
class KotlinFormatterUsageCollector : AbstractProjectsUsagesCollector() {
|
class KotlinFormatterUsageCollector : AbstractProjectsUsagesCollector() {
|
||||||
override fun getGroupId(): GroupDescriptor = GroupDescriptor.create(GROUP_ID)
|
override fun getGroupId(): GroupDescriptor = GroupDescriptor.create(GROUP_ID)
|
||||||
@@ -42,11 +44,18 @@ class KotlinFormatterUsageCollector : AbstractProjectsUsagesCollector() {
|
|||||||
private val KOTLIN_DEFAULT_COMMON = KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings
|
private val KOTLIN_DEFAULT_COMMON = KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings
|
||||||
.also { KotlinStyleGuideCodeStyle.applyToCommonSettings(it) }
|
.also { KotlinStyleGuideCodeStyle.applyToCommonSettings(it) }
|
||||||
|
|
||||||
private val KOTLIN_DEFAULT_CUSTOM = KotlinCodeStyleSettings.DEFAULT.clone()
|
private val KOTLIN_DEFAULT_CUSTOM = KotlinCodeStyleSettings.DEFAULT.cloneSettings()
|
||||||
.also { KotlinStyleGuideCodeStyle.applyToKotlinCustomSettings(it as KotlinCodeStyleSettings) }
|
.also { KotlinStyleGuideCodeStyle.applyToKotlinCustomSettings(it) }
|
||||||
|
|
||||||
|
private val KOTLIN_OBSOLETE_DEFAULT_COMMON = KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings
|
||||||
|
.also { KotlinObsoleteCodeStyle.applyToCommonSettings(it) }
|
||||||
|
|
||||||
|
private val KOTLIN_OBSOLETE_DEFAULT_CUSTOM = KotlinCodeStyleSettings.DEFAULT.cloneSettings()
|
||||||
|
.also { KotlinObsoleteCodeStyle.applyToKotlinCustomSettings(it) }
|
||||||
|
|
||||||
fun getKotlinFormatterKind(project: Project): KotlinFormatterKind {
|
fun getKotlinFormatterKind(project: Project): KotlinFormatterKind {
|
||||||
val isProject = CodeStyleSettingsManager.getInstance(project).USE_PER_PROJECT_SETTINGS
|
val isProject = CodeStyleSettingsManager.getInstance(project).USE_PER_PROJECT_SETTINGS
|
||||||
|
val isDefaultOfficialCodeStyle = isDefaultOfficialCodeStyle
|
||||||
|
|
||||||
val settings = CodeStyleSettingsManager.getSettings(project)
|
val settings = CodeStyleSettingsManager.getSettings(project)
|
||||||
val kotlinCommonSettings = settings.kotlinCommonSettings
|
val kotlinCommonSettings = settings.kotlinCommonSettings
|
||||||
@@ -54,23 +63,53 @@ class KotlinFormatterUsageCollector : AbstractProjectsUsagesCollector() {
|
|||||||
|
|
||||||
val isDefaultKotlinCommonSettings = kotlinCommonSettings == KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings
|
val isDefaultKotlinCommonSettings = kotlinCommonSettings == KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings
|
||||||
val isDefaultKotlinCustomSettings = kotlinCustomSettings == KotlinCodeStyleSettings.DEFAULT
|
val isDefaultKotlinCustomSettings = kotlinCustomSettings == KotlinCodeStyleSettings.DEFAULT
|
||||||
|
|
||||||
if (isDefaultKotlinCommonSettings && isDefaultKotlinCustomSettings) {
|
if (isDefaultKotlinCommonSettings && isDefaultKotlinCustomSettings) {
|
||||||
return if (isProject) KotlinFormatterKind.PROJECT_DEFAULT else KotlinFormatterKind.IDEA_DEFAULT
|
return if (isDefaultOfficialCodeStyle) {
|
||||||
|
paired(IDEA_OFFICIAL_DEFAULT, isProject)
|
||||||
|
} else {
|
||||||
|
paired(IDEA_DEFAULT, isProject)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val isOnlyKotlinStyle = kotlinCommonSettings == KOTLIN_DEFAULT_COMMON && kotlinCustomSettings == KOTLIN_DEFAULT_CUSTOM
|
if (kotlinCommonSettings == KOTLIN_OBSOLETE_DEFAULT_COMMON && kotlinCustomSettings == KOTLIN_OBSOLETE_DEFAULT_CUSTOM) {
|
||||||
if (isOnlyKotlinStyle) {
|
return paired(IDEA_OBSOLETE_KOTLIN, isProject)
|
||||||
return if (isProject) KotlinFormatterKind.PROJECT_KOTLIN else KotlinFormatterKind.IDEA_KOTLIN
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val isKotlinLikeSettings = settings == settings.clone().also {
|
if (kotlinCommonSettings == KOTLIN_DEFAULT_COMMON && kotlinCustomSettings == KOTLIN_DEFAULT_CUSTOM) {
|
||||||
|
return paired(IDEA_KOTLIN, isProject)
|
||||||
|
}
|
||||||
|
|
||||||
|
val isKotlinOfficialLikeSettings = settings == settings.clone().also {
|
||||||
KotlinStyleGuideCodeStyle.apply(it)
|
KotlinStyleGuideCodeStyle.apply(it)
|
||||||
}
|
}
|
||||||
if (isKotlinLikeSettings) {
|
if (isKotlinOfficialLikeSettings) {
|
||||||
return if (isProject) KotlinFormatterKind.PROJECT_KOTLIN_WITH_CUSTOM else KotlinFormatterKind.IDEA_KOTLIN_WITH_CUSTOM
|
return paired(IDEA_OFFICIAL_KOTLIN_WITH_CUSTOM, isProject)
|
||||||
}
|
}
|
||||||
|
|
||||||
return if (isProject) KotlinFormatterKind.PROJECT_CUSTOM else KotlinFormatterKind.IDEA_CUSTOM
|
val isKotlinObsoleteLikeSettings = settings == settings.clone().also {
|
||||||
|
KotlinObsoleteCodeStyle.apply(it)
|
||||||
|
}
|
||||||
|
if (isKotlinObsoleteLikeSettings) {
|
||||||
|
return paired(IDEA_KOTLIN_WITH_CUSTOM, isProject)
|
||||||
|
}
|
||||||
|
|
||||||
|
return paired(IDEA_CUSTOM, isProject)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun paired(kind: KotlinFormatterKind, isProject: Boolean): KotlinFormatterKind {
|
||||||
|
if (!isProject) return kind
|
||||||
|
|
||||||
|
return when (kind) {
|
||||||
|
IDEA_DEFAULT -> PROJECT_DEFAULT
|
||||||
|
IDEA_OFFICIAL_DEFAULT -> PROJECT_OFFICIAL_DEFAULT
|
||||||
|
IDEA_CUSTOM -> PROJECT_CUSTOM
|
||||||
|
IDEA_KOTLIN_WITH_CUSTOM -> PROJECT_KOTLIN_WITH_CUSTOM
|
||||||
|
IDEA_KOTLIN -> PROJECT_KOTLIN
|
||||||
|
IDEA_OBSOLETE_KOTLIN -> PROJECT_OBSOLETE_KOTLIN
|
||||||
|
IDEA_OFFICIAL_KOTLIN_WITH_CUSTOM -> PROJECT_OBSOLETE_KOTLIN_WITH_CUSTOM
|
||||||
|
else -> kind
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,6 +122,13 @@ class KotlinFormatterUsageCollector : AbstractProjectsUsagesCollector() {
|
|||||||
PROJECT_DEFAULT,
|
PROJECT_DEFAULT,
|
||||||
PROJECT_CUSTOM,
|
PROJECT_CUSTOM,
|
||||||
PROJECT_KOTLIN_WITH_CUSTOM,
|
PROJECT_KOTLIN_WITH_CUSTOM,
|
||||||
PROJECT_KOTLIN;
|
PROJECT_KOTLIN,
|
||||||
|
|
||||||
|
IDEA_OFFICIAL_DEFAULT,
|
||||||
|
IDEA_OBSOLETE_KOTLIN,
|
||||||
|
IDEA_OFFICIAL_KOTLIN_WITH_CUSTOM,
|
||||||
|
PROJECT_OFFICIAL_DEFAULT,
|
||||||
|
PROJECT_OBSOLETE_KOTLIN,
|
||||||
|
PROJECT_OBSOLETE_KOTLIN_WITH_CUSTOM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user