Refactor custom options registration for more type-safe API
This commit is contained in:
+41
-34
@@ -23,6 +23,7 @@ import com.intellij.psi.codeStyle.CommonCodeStyleSettings
|
|||||||
import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider
|
import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider
|
||||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||||
import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings
|
import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvider() {
|
class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvider() {
|
||||||
override fun getLanguage() = KotlinLanguage.INSTANCE
|
override fun getLanguage() = KotlinLanguage.INSTANCE
|
||||||
@@ -130,6 +131,10 @@ class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvide
|
|||||||
override fun getLanguageName(): String = KotlinLanguage.NAME
|
override fun getLanguageName(): String = KotlinLanguage.NAME
|
||||||
|
|
||||||
override fun customizeSettings(consumer: CodeStyleSettingsCustomizable, settingsType: LanguageCodeStyleSettingsProvider.SettingsType) {
|
override fun customizeSettings(consumer: CodeStyleSettingsCustomizable, settingsType: LanguageCodeStyleSettingsProvider.SettingsType) {
|
||||||
|
fun showCustomOption(field: KProperty<*>, title: String, groupName: String? = null) {
|
||||||
|
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, field.name, title, groupName)
|
||||||
|
}
|
||||||
|
|
||||||
when (settingsType) {
|
when (settingsType) {
|
||||||
LanguageCodeStyleSettingsProvider.SettingsType.SPACING_SETTINGS -> {
|
LanguageCodeStyleSettingsProvider.SettingsType.SPACING_SETTINGS -> {
|
||||||
consumer.showStandardOptions(
|
consumer.showStandardOptions(
|
||||||
@@ -148,44 +153,45 @@ class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvide
|
|||||||
"SPACE_BEFORE_CATCH_PARENTHESES"
|
"SPACE_BEFORE_CATCH_PARENTHESES"
|
||||||
);
|
);
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_AROUND_RANGE", "Around range (..)",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_AROUND_RANGE,
|
||||||
CodeStyleSettingsCustomizable.SPACES_AROUND_OPERATORS)
|
"Around range (..)",
|
||||||
|
CodeStyleSettingsCustomizable.SPACES_AROUND_OPERATORS)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_BEFORE_TYPE_COLON",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_BEFORE_TYPE_COLON,
|
||||||
"Space before colon, after declaration name",
|
"Space before colon, after declaration name",
|
||||||
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_AFTER_TYPE_COLON",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_AFTER_TYPE_COLON,
|
||||||
"Space after colon, before declaration type",
|
"Space after colon, before declaration type",
|
||||||
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_BEFORE_EXTEND_COLON",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_BEFORE_EXTEND_COLON,
|
||||||
"Space before colon in new type definition",
|
"Space before colon in new type definition",
|
||||||
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_AFTER_EXTEND_COLON",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_AFTER_EXTEND_COLON,
|
||||||
"Space after colon in new type definition",
|
"Space after colon in new type definition",
|
||||||
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD",
|
showCustomOption(KotlinCodeStyleSettings::INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD,
|
||||||
"Insert whitespaces in simple one line methods",
|
"Insert whitespaces in simple one line methods",
|
||||||
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_AROUND_FUNCTION_TYPE_ARROW",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_AROUND_FUNCTION_TYPE_ARROW,
|
||||||
"Surround arrow in function types with spaces",
|
"Surround arrow in function types with spaces",
|
||||||
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_AROUND_WHEN_ARROW",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_AROUND_WHEN_ARROW,
|
||||||
"Surround arrow in \"when\" clause with spaces",
|
"Surround arrow in \"when\" clause with spaces",
|
||||||
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_BEFORE_LAMBDA_ARROW",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_BEFORE_LAMBDA_ARROW,
|
||||||
"Before lambda arrow",
|
"Before lambda arrow",
|
||||||
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
CodeStyleSettingsCustomizable.SPACES_OTHER)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "SPACE_BEFORE_WHEN_PARENTHESES",
|
showCustomOption(KotlinCodeStyleSettings::SPACE_BEFORE_WHEN_PARENTHESES,
|
||||||
"'when' parentheses",
|
"'when' parentheses",
|
||||||
CodeStyleSettingsCustomizable.SPACES_BEFORE_PARENTHESES)
|
CodeStyleSettingsCustomizable.SPACES_BEFORE_PARENTHESES)
|
||||||
}
|
}
|
||||||
LanguageCodeStyleSettingsProvider.SettingsType.WRAPPING_AND_BRACES_SETTINGS -> {
|
LanguageCodeStyleSettingsProvider.SettingsType.WRAPPING_AND_BRACES_SETTINGS -> {
|
||||||
consumer.showStandardOptions(
|
consumer.showStandardOptions(
|
||||||
@@ -207,12 +213,13 @@ class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvide
|
|||||||
"METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE"
|
"METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE"
|
||||||
)
|
)
|
||||||
consumer.renameStandardOption(CodeStyleSettingsCustomizable.WRAPPING_SWITCH_STATEMENT, "'when' statements")
|
consumer.renameStandardOption(CodeStyleSettingsCustomizable.WRAPPING_SWITCH_STATEMENT, "'when' statements")
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "ALIGN_IN_COLUMNS_CASE_BRANCH", "Align 'when' branches in columns",
|
showCustomOption(KotlinCodeStyleSettings::ALIGN_IN_COLUMNS_CASE_BRANCH,
|
||||||
CodeStyleSettingsCustomizable.WRAPPING_SWITCH_STATEMENT)
|
"Align 'when' branches in columns",
|
||||||
|
CodeStyleSettingsCustomizable.WRAPPING_SWITCH_STATEMENT)
|
||||||
|
|
||||||
consumer.showCustomOption(KotlinCodeStyleSettings::class.java, "LBRACE_ON_NEXT_LINE",
|
showCustomOption(KotlinCodeStyleSettings::LBRACE_ON_NEXT_LINE,
|
||||||
"Put left brace on new line",
|
"Put left brace on new line",
|
||||||
CodeStyleSettingsCustomizable.WRAPPING_BRACES)
|
CodeStyleSettingsCustomizable.WRAPPING_BRACES)
|
||||||
}
|
}
|
||||||
LanguageCodeStyleSettingsProvider.SettingsType.BLANK_LINES_SETTINGS -> consumer.showStandardOptions(
|
LanguageCodeStyleSettingsProvider.SettingsType.BLANK_LINES_SETTINGS -> consumer.showStandardOptions(
|
||||||
"KEEP_BLANK_LINES_IN_CODE",
|
"KEEP_BLANK_LINES_IN_CODE",
|
||||||
|
|||||||
Reference in New Issue
Block a user