EditorConfig is a standard for defining basic editor configuration in projects. There is support available for 47 code editors as of writing, including both built-in and extension support. Many notable projects have adopted the standard already, including zsh, htop, and qemu. While this isn't a full-fledged C code style specifier, it does set some basic ground rules that make it more convenient for contributors to use any editor of their choice and not have to worry about indentation, line endings, encoding, final newlines, etc. This should make it significantly easier to conform to the kernel's general code style when used in combination with clang-format. For more information, check the official EditorConfig website: https://editorconfig.org/ Signed-off-by: Danny Lin <danny@xxxxxxxxxxx> --- v2: - Added rules for most exceptions to the 8-column tab indent style .editorconfig | 37 ++++++++++++++++++++++++++++++ .gitignore | 1 + Documentation/process/4.Coding.rst | 6 +++++ 3 files changed, 44 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000000..ab886ff0f66e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: GPL-2.0 +# Linux kernel EditorConfig file (https://editorconfig.org/) + +# Located at the project root +root = true + +# Base settings for most files +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true + +indent_style = tab +indent_size = 8 + +# This avoids introducing too many unnecessary changes in trivial commits +trim_trailing_whitespace = false + +# General 4-space files +[*.{pl,pm,py,tc,json,tc}] +indent_style = space +indent_size = 4 + +# General 2-space files +[*.{rb,rst,yaml,cocci,xsl,svg,bconf,clang-format}] +indent_style = space +indent_size = 2 + +# Perf script wrappers +[tools/perf/scripts/*/bin/*] +indent_style = space +indent_size = 4 + +# Man pages +[*.{1,2,3,4,5,6,7,8}] +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore index 87b9dd8a163b..956bcc3c9d76 100644 --- a/.gitignore +++ b/.gitignore @@ -89,6 +89,7 @@ modules.order # !.clang-format !.cocciconfig +!.editorconfig !.get_maintainer.ignore !.gitattributes !.gitignore diff --git a/Documentation/process/4.Coding.rst b/Documentation/process/4.Coding.rst index 13dd893c9f88..25b39dc8751d 100644 --- a/Documentation/process/4.Coding.rst +++ b/Documentation/process/4.Coding.rst @@ -66,6 +66,12 @@ for aligning variables/macros, for reflowing text and other similar tasks. See the file :ref:`Documentation/process/clang-format.rst <clangformat>` for more details. +Some basic editor settings, such as indentation and line endings, will be +set automatically if you are using an editor that is compatible with +EditorConfig. See the official EditorConfig website for more information: + +https://editorconfig.org/ + Abstraction layers ****************** -- 2.27.0