Last active
September 9, 2024 19:11
-
-
Save osipxd/9a786496634a1ef0ea622c9805601490 to your computer and use it in GitHub Desktop.
EditorConfig for Android projects with mapping to IntelliJ IDEA's config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
## 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Unset options
If some common option is configured on top level and we want to ensure that developers hasn't overriden this option for specific language, it is useful to unset the option for the language. For example:
Wrap style mapping
off
normal
on_every_item
split_into_lines
* int form is used in several options where it is not possible to use
on_every_item
modeSource: WrappingAccessor.java
Imports Layout
The format of imports layout is not documented, but there is a comment with a brief description of it.