# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
# More information at https://EditorConfig.org

root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
indent_style = space
max_line_length = 120

# Python: PEP8 defines 4 spaces for indentation
[*.{py,java,r,R,sh}]
indent_size = 4

# The JSON files contain newlines inconsistently
[*.json]
indent_size = 2
insert_final_newline = false

[*.{yml,yaml}]
indent_size = 2

[*.{md,Rmd,rst}]
max_line_length = 79
trim_trailing_whitespace = false
indent_size = 2

# Tabs matter for Makefile and .gitmodules
[{makefile*,Makefile*,*.mk,*.mak,*.makefile,*.Makefile,GNUmakefile,BSDmakefile,make.bat,Makevars*,*.gitmodules}]
indent_style = tab
insert_final_newline = false

# Placeholder files
[{*.gitkeep,__init__.py,.envrc}]
insert_final_newline = false

[{LICENSE, VERSION*, requirements*}]
insert_final_newline = false

[*.c]
max_line_length = 100

[*.h]
max_line_length = 100

[.git/*]
trim_trailing_whitespace = false

# Jenkinsfiles and Dockerfile files only
[*.{Jenkinsfile,dockerfile}]
indent_style = tab
indent_size = 4
