Skip to content

Instantly share code, notes, and snippets.

@osipxd
Last active April 24, 2025 09:13
Show Gist options
  • Save osipxd/9a786496634a1ef0ea622c9805601490 to your computer and use it in GitHub Desktop.
Save osipxd/9a786496634a1ef0ea622c9805601490 to your computer and use it in GitHub Desktop.
EditorConfig for Android projects with mapping to IntelliJ IDEA's config
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
max_line_length = 120
# Uncomment if you want to show non-strict recommended guideline
#ij_visual_guides = 100
# General
ij_continuation_indent_size = 8
ij_smart_tabs = false
ij_wrap_on_typing = false
ij_any_keep_indents_on_empty_lines = false
# Formatter
ij_formatter_tags_enabled = true
ij_formatter_on_tag = @formatter:on
ij_formatter_off_tag = @formatter:off
[{*.kt,*.kts}]
# Tabs and Indents
# continuation_indent_size = 4 to match ktlint settings
ij_kotlin_continuation_indent_size = 4
ij_kotlin_keep_indents_on_empty_lines = unset
# Spaces
## Before parentheses
ij_kotlin_space_before_if_parentheses = true
ij_kotlin_space_before_for_parentheses = true
ij_kotlin_space_before_while_parentheses = true
ij_kotlin_space_before_catch_parentheses = true
ij_kotlin_space_before_when_parentheses = true
## Around operators
ij_kotlin_spaces_around_assignment_operators = true
ij_kotlin_spaces_around_logical_operators = true
ij_kotlin_spaces_around_equality_operators = true
ij_kotlin_spaces_around_relational_operators = true
ij_kotlin_spaces_around_additive_operators = true
ij_kotlin_spaces_around_multiplicative_operators = true
ij_kotlin_spaces_around_unary_operator = false
ij_kotlin_spaces_around_range = false
## Other
ij_kotlin_space_before_comma = false
ij_kotlin_space_after_comma = true
ij_kotlin_space_before_type_colon = false
ij_kotlin_space_after_type_colon = true
ij_kotlin_space_before_extend_colon = true
ij_kotlin_space_after_extend_colon = true
ij_kotlin_insert_whitespaces_in_simple_one_line_method = true
ij_kotlin_spaces_around_function_type_arrow = true
ij_kotlin_spaces_around_when_arrow = true
ij_kotlin_space_before_lambda_arrow = true
# Wrapping and Braces
## Keep when reformatting
ij_kotlin_keep_line_breaks = true
ij_kotlin_keep_first_column_comment = true
## Extends/implements list
ij_kotlin_extends_list_wrap = normal
ij_kotlin_align_multiline_extends_list = false
ij_kotlin_continuation_indent_in_supertype_lists = false
## Function declaration parameters
ij_kotlin_method_parameters_wrap = on_every_item
ij_kotlin_align_multiline_parameters = true
ij_kotlin_method_parameters_new_line_after_left_paren = true
ij_kotlin_method_parameters_right_paren_on_new_line = true
ij_kotlin_continuation_indent_in_parameter_lists = false
## Function call arguments
ij_kotlin_call_parameters_wrap = on_every_item
ij_kotlin_align_multiline_parameters_in_calls = false
ij_kotlin_call_parameters_new_line_after_left_paren = true
ij_kotlin_call_parameters_right_paren_on_new_line = true
ij_kotlin_continuation_indent_in_argument_lists = false
## Function parentheses
ij_kotlin_align_multiline_method_parentheses = false
## Chained function calls
ij_kotlin_method_call_chain_wrap = normal
ij_kotlin_wrap_first_method_in_call_chain = false
ij_kotlin_continuation_indent_for_chained_calls = false
## 'if()' statement
ij_kotlin_else_on_new_line = false
ij_kotlin_if_rparen_on_new_line = true
ij_kotlin_continuation_indent_in_if_conditions = false
## 'do ... while()' statement
ij_kotlin_while_on_new_line = false
## 'try' statement
ij_kotlin_catch_on_new_line = false
ij_kotlin_finally_on_new_line = false
## Binary expressions
ij_kotlin_align_multiline_binary_operation = false
## Wraps
ij_kotlin_assignment_wrap = normal
ij_kotlin_enum_constants_wrap = off
ij_kotlin_class_annotation_wrap = split_into_lines
ij_kotlin_method_annotation_wrap = split_into_lines
ij_kotlin_field_annotation_wrap = split_into_lines
ij_kotlin_parameter_annotation_wrap = off
ij_kotlin_variable_annotation_wrap = off
## 'when' statements
ij_kotlin_align_in_columns_case_branch = false
ij_kotlin_line_break_after_multiline_when_entry = true
ij_kotlin_indent_before_arrow_on_new_line = true
## Braces placement
ij_kotlin_lbrace_on_next_line = false
## Expression body functions
ij_kotlin_wrap_expression_body_functions = 1
ij_kotlin_continuation_indent_for_expression_bodies = false
## Elvis expressions
ij_kotlin_wrap_elvis_expressions = 1
ij_kotlin_continuation_indent_in_elvis = false
# Blank Lines
## Keep maximum blank lines
ij_kotlin_keep_blank_lines_in_declarations = 1
ij_kotlin_keep_blank_lines_in_code = 1
ij_kotlin_keep_blank_lines_before_right_brace = 0
## Minimum blank lines
ij_kotlin_blank_lines_after_class_header = 0
ij_kotlin_blank_lines_around_block_when_branches = 1
ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1
# Imports
ij_kotlin_name_count_to_use_star_import = 5
ij_kotlin_name_count_to_use_star_import_for_members = 3
ij_kotlin_import_nested_classes = false
ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.**,io.ktor.**
ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^
# Other
## Trailing comma
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = false
# Code generation
## Comment code
ij_kotlin_line_comment_at_first_column = true
ij_kotlin_line_comment_add_space = false
ij_kotlin_line_comment_add_space_on_reformat = false
ij_kotlin_block_comment_at_first_column = true
ij_kotlin_block_comment_add_space = false
# Compose
ij_kotlin_use_custom_formatting_for_modifiers = true
# Load/Save
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
[*.kts]
# Always use wildcard imports in scripts
ij_kotlin_name_count_to_use_star_import = 2
# EditorConfig can not set some of XML code style options.
# Remember to set default Android XML code style: Editor > Code Style > XML > Set from... -> Android
[{**/res/**.xml,**/AndroidManifest.xml}]
# Tabs and Indents
ij_xml_continuation_indent_size = 4
ij_xml_keep_indents_on_empty_lines = unset
# Other
ij_xml_keep_line_breaks = false
ij_xml_keep_line_breaks_in_text = true
ij_xml_keep_blank_lines = 2
ij_xml_attribute_wrap = normal
ij_xml_text_wrap = normal
ij_xml_align_text = false
ij_xml_align_attributes = false
ij_xml_keep_whitespaces = false
## Spaces
ij_xml_space_around_equals_in_attribute = false
ij_xml_space_after_tag_name = false
ij_xml_space_inside_empty_tag = true
## CDATA
ij_xml_keep_whitespaces_around_cdata = preserve
ij_xml_keep_whitespaces_inside_cdata = false
# Code Generation
ij_xml_line_comment_at_first_column = true
ij_xml_block_comment_at_first_column = true
ij_xml_block_comment_add_space = false
# Android
ij_xml_use_custom_settings = true
[*.md]
trim_trailing_whitespace = false
# Wrapping and Braces
ij_markdown_wrap_text_if_long = false
ij_markdown_wrap_text_inside_blockquotes = false
## When reformatting
ij_markdown_keep_line_breaks_inside_text_blocks = true
ij_markdown_insert_quote_arrows_on_wrap = true
ij_markdown_format_tables = true
# Tabs and Indents
ij_markdown_keep_indents_on_empty_lines = unset
# Blank Lines
## Keep maximum blank lines
ij_markdown_max_lines_around_header = 1
ij_markdown_max_lines_around_block_elements = 1
ij_markdown_max_lines_between_paragraphs = 1
## Minimum blank lines
ij_markdown_min_lines_around_header = 1
ij_markdown_min_lines_around_block_elements = 1
ij_markdown_min_lines_between_paragraphs = 1
# Spaces
## Force one space
ij_markdown_force_one_space_between_words = true
ij_markdown_force_one_space_after_header_symbol = true
ij_markdown_force_one_space_after_list_bullet = true
ij_markdown_force_one_space_after_blockquote_symbol = true
[{*.yaml,*.yml}]
indent_size = 2
ij_yaml_keep_indents_on_empty_lines = unset
ij_yaml_keep_line_breaks = true
ij_yaml_spaces_within_brackets = false
[{*.bash,*.sh,*.zsh}]
indent_size = 2
tab_width = 2
[*.bat]
end_of_line = crlf
[*.properties]
ij_properties_keep_blank_lines = true
@osipxd
Copy link
Author

osipxd commented Mar 5, 2025

What do you think about adding ij_kotlin_indent_before_arrow_on_new_line?

Thank you! Added this one

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment