diff --git a/idea/resources-en/messages/KotlinBundle.properties b/idea/resources-en/messages/KotlinBundle.properties
index 71a1914acc6..b47b70d3527 100644
--- a/idea/resources-en/messages/KotlinBundle.properties
+++ b/idea/resources-en/messages/KotlinBundle.properties
@@ -511,6 +511,7 @@ formatter.button.text.use.import.with.when.at.least=Use import with '*' when at
formatter.button.text.use.import.with=Use import with '*'
formatter.button.text.use.single.name.import=Use single name import
formatter.checkbox.text.insert.imports.for.nested.classes=Insert imports for nested classes
+formatter.checkbox.text.use.trailing.comma=Use trailing comma
formatter.text.names.used=\ names used
formatter.text.use.defaults.from=Use defaults from:
formatter.title.after.colon.before.declaration.type=After colon, before declaration type
@@ -534,6 +535,7 @@ formatter.title.in.simple.one.line.methods=In simple one line methods
formatter.title.java.statics.and.enum.members=Java Statics and Enum Members
formatter.title.load.save=Load/Save
formatter.title.other=Other
+formatter.title.trailing.comma=Trailing comma
formatter.title.property.annotations=Property annotations
formatter.title.put.left.brace.on.new.line=Put left brace on new line
formatter.title.range.operator=Range operator (..)
diff --git a/idea/resources-en/search/searchableOptions.xml b/idea/resources-en/search/searchableOptions.xml
index 663837242d9..b3f2cedb2b0 100644
--- a/idea/resources-en/search/searchableOptions.xml
+++ b/idea/resources-en/search/searchableOptions.xml
@@ -618,6 +618,11 @@
+
+
+
+
+
@@ -664,6 +669,11 @@
+
+
+
+
+
@@ -677,6 +687,8 @@
+
+
@@ -696,6 +708,9 @@
+
+
+
@@ -1044,9 +1059,6 @@
-
-
-
diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinCodeStylePanel.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinCodeStylePanel.kt
index cc54a708cd8..0678395d4e8 100644
--- a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinCodeStylePanel.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinCodeStylePanel.kt
@@ -16,6 +16,7 @@ class KotlinCodeStylePanel(currentSettings: CodeStyleSettings, settings: CodeSty
super.initTabs(settings)
addTab(ImportSettingsPanelWrapper(settings))
+ addTab(KotlinOtherSettingsPanel(settings))
for (provider in CodeStyleSettingsProvider.EXTENSION_POINT_NAME.extensions) {
if (provider.language == KotlinLanguage.INSTANCE && !provider.hasSettingsPage()) {
createTab(provider)
diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinLanguageCodeStyleSettingsProvider.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinLanguageCodeStyleSettingsProvider.kt
index 04a9e53a2cf..8cc500fc177 100644
--- a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinLanguageCodeStyleSettingsProvider.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinLanguageCodeStyleSettingsProvider.kt
@@ -172,8 +172,6 @@ class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvide
KotlinBundle.message("formatter.title.function.parentheses")
)
- showCustomOption(KotlinCodeStyleSettings::ALLOW_TRAILING_COMMA, "Use trailing comma")
-
showCustomOption(
KotlinCodeStyleSettings::ALIGN_IN_COLUMNS_CASE_BRANCH,
KotlinBundle.message("formatter.title.align.when.branches.in.columns"),
diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinOtherSettingsPanel.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinOtherSettingsPanel.kt
new file mode 100644
index 00000000000..9dc6926b18a
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinOtherSettingsPanel.kt
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * 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.formatter
+
+import com.intellij.application.options.CodeStyleAbstractPanel
+import com.intellij.openapi.editor.colors.EditorColorsScheme
+import com.intellij.psi.codeStyle.CodeStyleSettings
+import com.intellij.ui.OptionGroup
+import com.intellij.ui.components.JBScrollPane
+import com.intellij.ui.components.panels.VerticalLayout
+import com.intellij.util.ui.JBUI
+import com.intellij.util.ui.UIUtil
+import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.idea.KotlinLanguage
+import java.awt.BorderLayout
+import javax.swing.BorderFactory
+import javax.swing.JCheckBox
+import javax.swing.JPanel
+
+class KotlinOtherSettingsPanel(settings: CodeStyleSettings) : CodeStyleAbstractPanel(KotlinLanguage.INSTANCE, null, settings) {
+ private val cbTrailingComma = JCheckBox(KotlinBundle.message("formatter.checkbox.text.use.trailing.comma"))
+
+ override fun getRightMargin() = throw UnsupportedOperationException()
+
+ override fun createHighlighter(scheme: EditorColorsScheme) = throw UnsupportedOperationException()
+
+ override fun getFileType() = throw UnsupportedOperationException()
+
+ override fun getPreviewText(): String? = null
+
+ override fun apply(settings: CodeStyleSettings) {
+ settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA = cbTrailingComma.isSelected
+ }
+
+ override fun isModified(settings: CodeStyleSettings): Boolean {
+ return settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA != cbTrailingComma.isSelected
+ }
+
+ override fun getPanel() = jPanel
+
+ override fun resetImpl(settings: CodeStyleSettings) {
+ cbTrailingComma.isSelected = settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA
+ }
+
+ override fun getTabTitle(): String = KotlinBundle.message("formatter.title.other")
+
+ private val jPanel = JPanel(BorderLayout()).apply {
+ add(
+ JBScrollPane(
+ JPanel(VerticalLayout(JBUI.scale(5))).apply {
+ border = BorderFactory.createEmptyBorder(UIUtil.DEFAULT_VGAP, 10, UIUtil.DEFAULT_VGAP, 10)
+ add(
+ OptionGroup(KotlinBundle.message("formatter.title.trailing.comma")).apply {
+ add(cbTrailingComma)
+ }.createPanel()
+ )
+ }
+ )
+ )
+ }
+}
\ No newline at end of file