public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4] Add .editorconfig file for basic formatting
@ 2023-06-01  7:53 Íñigo Huguet
  2023-06-02 15:37 ` Mickaël Salaün
                   ` (3 more replies)
  0 siblings, 4 replies; 30+ messages in thread
From: Íñigo Huguet @ 2023-06-01  7:53 UTC (permalink / raw)
  To: ojeda, danny
  Cc: masahiroy, jgg, mic, linux-kernel, corbet, joe, linux, willy,
	mailhol.vincent, Íñigo Huguet

EditorConfig is a specification to define the most basic code formatting
stuff, and it's supported by many editors and IDEs, either directly or
via plugins, including VSCode/VSCodium, Vim, emacs and more.

It allows to define formatting style related to indentation, charset,
end of lines and trailing whitespaces. It also allows to apply different
formats for different files based on wildcards, so for example it is
possible to apply different configs to *.{c,h}, *.py and *.rs.

In linux project, defining a .editorconfig might help to those people
that work on different projects with different indentation styles, so
they cannot define a global style. Now they will directly see the
correct indentation on every fresh clone of the project.

See https://editorconfig.org

Co-developed-by: Danny Lin <danny@kdrag0n.dev>
Signed-off-by: Danny Lin <danny@kdrag0n.dev>
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
---
v2:
- added special rule for patch files so it doesn't remove
  trailing whitespaces, making them unusable.
v3:
- moved all rules from [*] section to all the individual
  sections so they doesn't affect to unexpected files.
- added some extensions and files from a patch from Danny
  Lin that didn't get to be merged:
  https://lore.kernel.org/lkml/20200703073143.423557-1-danny@kdrag0n.dev/
  However, the following file types hasn't been added
  because they don't have a clear common style:
  rst,pl,cocci,tc,bconf,svg,xsl,manual pages
v4:
- Analyzed with a script the styles used by different file types
- Added rules for awd, dts, dtsi, dtso, s, S
- Removed rules for rb and pm that has very few files in the tree
- Removed rules for tools/perf/scripts/*/bin/*
- Changed rules for py to better match the 2 styles that are present in
  the tree: 4 spaces by default and tabs for files in subdirectories
  tools/{perf,power,rcu,testing/kunit}
---
 .editorconfig                          | 32 ++++++++++++++++++++++++++
 .gitignore                             |  1 +
 Documentation/process/4.Coding.rst     |  4 ++++
 Documentation/process/coding-style.rst |  4 ++++
 4 files changed, 41 insertions(+)
 create mode 100644 .editorconfig

diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000000..854773350cc5
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+root = true
+
+[{*.{awk,c,dts,dtsi,dtso,h,mk,s,S},Kconfig,Makefile,Makefile.*}]
+charset = utf-8
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = tab
+indent_size = 8
+
+[*.{json,py,rs}]
+charset = utf-8
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 4
+
+# this must be below the general *.py to overwrite it
+[tools/{perf,power,rcu,testing/kunit}/**.py,]
+indent_style = tab
+indent_size = 8
+
+[*.yaml]
+charset = utf-8
+end_of_line = lf
+trim_trailing_whitespace = unset
+insert_final_newline = true
+indent_style = space
+indent_size = 2
diff --git a/.gitignore b/.gitignore
index 70ec6037fa7a..e4b3fe1d029b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -100,6 +100,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 1f0d81f44e14..c2046dec0c2f 100644
--- a/Documentation/process/4.Coding.rst
+++ b/Documentation/process/4.Coding.rst
@@ -66,6 +66,10 @@ 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
 ******************
diff --git a/Documentation/process/coding-style.rst b/Documentation/process/coding-style.rst
index 007e49ef6cec..ec96462fa8be 100644
--- a/Documentation/process/coding-style.rst
+++ b/Documentation/process/coding-style.rst
@@ -735,6 +735,10 @@ 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/
 
 10) Kconfig configuration files
 -------------------------------
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2024-06-11  6:44 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-01  7:53 [PATCH v4] Add .editorconfig file for basic formatting Íñigo Huguet
2023-06-02 15:37 ` Mickaël Salaün
2023-06-04 20:49   ` Miguel Ojeda
2023-06-09  7:50 ` Jonathan Corbet
2023-06-09  8:23   ` Miguel Ojeda
2023-06-09  8:49   ` Íñigo Huguet
2023-06-09  8:50     ` Íñigo Huguet
2023-06-09 10:49     ` Miguel Ojeda
2023-06-14 11:33       ` Íñigo Huguet
2023-06-09 13:23   ` Mickaël Salaün
2023-06-14 11:40     ` Íñigo Huguet
2023-06-14 12:08       ` Rasmus Villemoes
2023-06-14 12:53       ` Vincent MAILHOL
2023-06-14 13:04         ` Íñigo Huguet
2023-06-15  2:40           ` Vincent MAILHOL
2023-06-15  6:35             ` Íñigo Huguet
2023-10-11  7:36 ` Vincent MAILHOL
2023-10-23  2:28   ` Jonathan Corbet
2023-10-23  6:18     ` Vincent MAILHOL
2023-10-23  6:26       ` Íñigo Huguet
2023-12-11 17:50         ` Masahiro Yamada
2024-06-02 15:30           ` Mateusz Guzik
2024-06-02 16:28             ` Miguel Ojeda
2024-06-02 18:17               ` Joe Perches
2024-06-03 12:18             ` Jason Gunthorpe
2024-06-03 12:52               ` Mateusz Guzik
2024-06-03 13:38                 ` Miguel Ojeda
2024-06-03 15:09                   ` Mateusz Guzik
2024-06-11  6:44               ` Greg KH
2024-01-23 20:03 ` andy.shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox