From 70105c8574e17613af29d75a670a0614daf8c8e1 Mon Sep 17 00:00:00 2001 From: Michele Cereda Date: Wed, 20 Sep 2023 20:24:37 +0200 Subject: [PATCH] feat: editorconfig --- .editorconfig | 15 ++++++ examples/dotfiles/.editorconfig | 33 +++++++++++++ knowledge base/editorconfig.md | 82 +++++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 .editorconfig create mode 100644 examples/dotfiles/.editorconfig create mode 100644 knowledge base/editorconfig.md diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..2c16156 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{yaml,yml}] +indent_size = 2 diff --git a/examples/dotfiles/.editorconfig b/examples/dotfiles/.editorconfig new file mode 100644 index 0000000..f5c89b5 --- /dev/null +++ b/examples/dotfiles/.editorconfig @@ -0,0 +1,33 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# Matches multiple files with brace expansion notation +# Set default charset +[*.{js,py}] +charset = utf-8 + +# 4 space indentation +[*.py] +indent_style = space +indent_size = 4 + +# Tab indentation (no size specified) +[Makefile] +indent_style = tab + +# Indentation override for all JS under lib directory +[lib/**.js] +indent_style = space +indent_size = 2 + +# Matches the exact files either package.json or .travis.yml +[{package.json,.travis.yml}] +indent_style = space +indent_size = 2 diff --git a/knowledge base/editorconfig.md b/knowledge base/editorconfig.md new file mode 100644 index 0000000..9c2be91 --- /dev/null +++ b/knowledge base/editorconfig.md @@ -0,0 +1,82 @@ +# EditorConfig + +Intro + +## Table of contents + +1. [TL;DR](#tldr) +1. [Further readings](#further-readings) +1. [Sources](#sources) + +## TL;DR + +File example: + +```ini +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# Matches multiple files with brace expansion notation +# Set default charset +[*.{js,py}] +charset = utf-8 + +# 4 space indentation +[*.py] +indent_style = space +indent_size = 4 + +# Tab indentation (no size specified) +[Makefile] +indent_style = tab + +# Indentation override for all JS under lib directory +[lib/**.js] +indent_style = space +indent_size = 2 + +# Matches the exact files either package.json or .travis.yml +[{package.json,.travis.yml}] +indent_style = space +indent_size = 2 +``` + +When opening a file, the compatible editor (or the EditorConfig plugin for it) looks for a file named `.editorconfig` in the directory of the opened file, **and** in every parent directory.
+The search for `.editorconfig` files will stop if the root filepath is reached or an EditorConfig file with the `root=true` key pair is found. + +EditorConfig files are read **top to bottom**, and the most recent rules found take precedence (last one applies).
+Properties from matching EditorConfig sections are applied in the order they are read, so properties in closer files take precedence. + +## Further readings + +- [Website] +- [Github] + +## Sources + +All the references in the [further readings] section, plus the following: + +- [Properties] + + + + +[github]: https://github.com/editorconfig/editorconfig/ +[properties]: https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties +[website]: https://editorconfig.org/ + + +[further readings]: #further-readings + + + +