wiki/contributing/formatting/editorconfig.md
dfh b3fe093ca5
Some checks failed
buildbot/nix-build .#checks.aarch64-darwin Build done.
buildbot/nix-build .#checks.aarch64-linux Build done.
buildbot/nix-build .#checks.x86_64-darwin Build done.
buildbot/nix-build .#checks.x86_64-linux Build done.
buildbot/nix-eval Build done.
docs: update contributing/formatting/editorconfig
2024-08-02 19:54:33 +00:00

178 lines
2.8 KiB
Markdown

---
title: Editorconfig
description: Using .editorconfig
published: true
date: 2024-08-02T19:54:32.003Z
tags:
editor: markdown
dateCreated: 2024-05-05T18:30:37.455Z
---
# Global
Start your `.editorconfig` file with this:
```editorconfig
root = true
[*]
charset = utf-8
trim_trailing_whitespace = true
end_of_line = lf
insert_final_newline = true
indent_style = tabs
```
> The formatting tool `prettier` adjust auto-formatting styles according to `.editorconfig` but ignores some attributes. This includes `insert_final_newline` which is hard-coded to `true`. See [prettier issue #6360](https://github.com/prettier/prettier/issues/6360#issuecomment-520368783)
> Please ensure you are not setting `insert_final_newline` in any of your language specific settings.
>{.is-info}
And add any additional types you need from below, making sure to separate each section with a new line.
---
# Programming Languages
## Nix
Using nixfmt-rfc-style
```editorconfig
[*.nix]
indent_size = 2
indent_style = space
```
## Python
Using pycodestyle
```editorconfig
[*.{py,py3}]
indent_size = 4
indent_style = space
```
## Node.js
Using prettier
```editorconfig
[*.{cjs,mjs,js,ts,jsx,tsx}]
indent_size = 2
```
## Rust
Using cargo fmt
```editorconfig
[*.rs,Cargo.toml]
indent_size = 4
```
## Go
Using gofmt
```editorconfig
[*.{go,mod}]
indent_size = 4
```
## C and Related
```editorconfig
[*.{c,cpp,cs,h,hpp,C,H,cxx,hxx}]
indent_size = 4
[*.{sln,csproj,vbproj,vcxproj.filters,proj,projitems,shproj}]
indent_size = 2
```
## Shell Script
```editorconfig
[*.{sh,zsh,bash,bat,cmd,ps1,psm1}]
indent_size = 4
```
# Markup Languages
## Markdown
```editorconfig
[*.md]
indent_size = 2
trim_trailing_whitespace = false
```
## Web
```editorconfig
[*.{htm,html,less,svg,vue}]
indent_size = 2
[*.{css.sass,scss,less}]
indent_size = 2
```
# Data Storage Files
## JSON, YAML
```editorconfig
[*.{json,json5,webmanifest}]
indent_size = 2
```
## YAML
```editorconfig
[*.{yaml,yml}]
indent_style = space
indent_size = 2
```
## TOML
```editorconfig
[*.toml]
indent_style = unset
indent_size = 0
```
## \*RC
```editorconfig
[.*rc]
indent_size = 2
```
## CSV
```editorconfig
[*.csv]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
indent_size = 0
indent_style = unset
```
## Lockfile
```editorconfig
[*.lock]
indent_style = unset
insert_final_newline = unset
```
## Git
```editorconfig
[*.{diff,patch}]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
indent_size = unset
indent_style = unset
[.{gitignore,gitreview,gitmodules}]
indent_style = unset
indent_size = 0
```
## Keys
```editorconfig
[*.{asc,key,ovpn,pem}]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
```
# Build Tool Files
## Make
```editorconfig
[Makefile]
indent_size = 2
```