# EditorConfig helps maintain consistent coding styles across different editors and IDEs
# https://editorconfig.org/

root = true

# Default settings — Tabs preferred, width = 2 spaces
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = tab
tab_width = 2

# PowerShell scripts — tabs, 2-space visual width
[*.ps1]
indent_style = tab
tab_width = 2
end_of_line = crlf

# Markdown files — keep trailing whitespace for line breaks, use tabs for indentation
# No max_line_length specified - Markdown lines can be any length
[*.md]
trim_trailing_whitespace = false
indent_style = tab
tab_width = 2
max_line_length = off

# YAML files — spaces only (YAML spec forbids tabs)
[*.{yml,yaml}]
indent_style = space
indent_size = 2

# Python files — spaces only (PEP 8 standard)
[*.py]
indent_style = space
indent_size = 4

# Haskell files — spaces only (layout rules)
[*.{hs,lhs}]
indent_style = space
indent_size = 2

# F# files — spaces only (indentation-sensitive syntax)
[*.{fs,fsx,fsi}]
indent_style = space
indent_size = 4

# CoffeeScript files — spaces only (whitespace-significant)
[*.coffee]
indent_style = space
indent_size = 2

# Nim files — spaces only (style guide)
[*.{nim,nims,nimble}]
indent_style = space
indent_size = 2

# JSON files — spaces only (parser compatibility)
[*.json]
indent_style = space
indent_size = 2

# reStructuredText files — spaces only (indentation requirement)
[*.rst]
indent_style = space
indent_size = 3

# Makefiles — always tabs, default width
[Makefile]
indent_style = tab
tab_width = 2

# Windows batch scripts — keep CRLF endings
[*.{bat,cmd}]
end_of_line = crlf

# Shell scripts — ensure LF endings
[*.sh]
end_of_line = lf
