[Mesa-dev] [RFC mesa] Introduce .editorconfig

Jose Fonseca jfonseca at vmware.com
Fri Jul 22 12:40:40 UTC 2016


On 18/07/16 00:46, Eric Engestrom wrote:
> A few weeks ago, Jose Fonseca suggested [0] we use .editorconfig files
> to try and enforce the formatting of the code, to which Michel Dänzer
> suggested [1] we start by importing the existing .dir-locals.el
> settings.
>
> This is a first draft, with settings from the mentioned emacs files,
> augmented with what I could see was the current practice in various
> submodules.
> Note that it might not reflects the desired formatting. Please say so if
> this is the case. I expect several of these .editorconfig files are in
> this situation, so don't hesitate to just tell me "the current formatting
> for X is wrong, we want to eventually match the project-wide formatting,
> so don't create this .editorconfig".
>
> These .editorconfig are a first step, one that has the advantage of
> requiring little to no intervention from the devs once the settings
> files are in place, but the settings are very limited. This does have
> the advantage of applying while the code is being written.
> This doesn't replace the need for more comprehensive formatting tools
> such as clang-format & clang-tidy, but those reformat the code after
> the fact.
>
> [0] https://lists.freedesktop.org/archives/mesa-dev/2016-June/121545.html
> [1] https://lists.freedesktop.org/archives/mesa-dev/2016-June/121639.html
>
> ---
>   .editorconfig                                    | 44 ++++++++++++++++++++++++
>   bin/.editorconfig                                |  3 ++
>   include/CL/.editorconfig                         |  3 ++
>   include/D3D9/.editorconfig                       |  2 ++
>   include/c11/.editorconfig                        |  3 ++
>   include/d3dadapter/.editorconfig                 |  3 ++
>   include/vulkan/.editorconfig                     |  3 ++
>   src/egl/drivers/haiku/.editorconfig              |  2 ++
>   src/egl/wayland/.editorconfig                    |  2 ++
>   src/gallium/drivers/freedreno/.editorconfig      |  2 ++
>   src/gallium/drivers/noop/.editorconfig           |  2 ++
>   src/gallium/drivers/r300/.editorconfig           |  3 ++
>   src/gallium/drivers/r600/.editorconfig           |  2 ++
>   src/gallium/drivers/radeon/.editorconfig         |  2 ++
>   src/gallium/drivers/radeonsi/.editorconfig       |  2 ++
>   src/gallium/drivers/vc4/.editorconfig            |  3 ++
>   src/gallium/drivers/vc4/kernel/.editorconfig     |  2 ++
>   src/gallium/state_trackers/hgl/.editorconfig     |  2 ++
>   src/gallium/state_trackers/nine/.editorconfig    |  3 ++
>   src/gallium/state_trackers/xa/.editorconfig      |  3 ++
>   src/gallium/targets/d3dadapter9/.editorconfig    |  3 ++
>   src/gallium/targets/haiku-softpipe/.editorconfig |  2 ++
>   src/gallium/winsys/freedreno/drm/.editorconfig   |  2 ++
>   src/gallium/winsys/nouveau/drm/.editorconfig     |  2 ++
>   src/gallium/winsys/radeon/drm/.editorconfig      |  3 ++
>   src/gallium/winsys/sw/hgl/.editorconfig          |  2 ++
>   src/getopt/.editorconfig                         |  2 ++
>   src/gtest/.editorconfig                          |  3 ++
>   src/hgl/.editorconfig                            |  2 ++
>   src/mesa/drivers/dri/nouveau/.editorconfig       |  2 ++
>   src/mesa/drivers/dri/radeon/.editorconfig        |  2 ++
>   31 files changed, 116 insertions(+)
>   create mode 100644 .editorconfig
>   create mode 100644 bin/.editorconfig
>   create mode 100644 include/CL/.editorconfig
>   create mode 100644 include/D3D9/.editorconfig
>   create mode 100644 include/c11/.editorconfig
>   create mode 100644 include/d3dadapter/.editorconfig
>   create mode 100644 include/vulkan/.editorconfig
>   create mode 100644 src/egl/drivers/haiku/.editorconfig
>   create mode 100644 src/egl/wayland/.editorconfig
>   create mode 100644 src/gallium/drivers/freedreno/.editorconfig
>   create mode 100644 src/gallium/drivers/noop/.editorconfig
>   create mode 100644 src/gallium/drivers/r300/.editorconfig
>   create mode 100644 src/gallium/drivers/r600/.editorconfig
>   create mode 100644 src/gallium/drivers/radeon/.editorconfig
>   create mode 100644 src/gallium/drivers/radeonsi/.editorconfig
>   create mode 100644 src/gallium/drivers/vc4/.editorconfig
>   create mode 100644 src/gallium/drivers/vc4/kernel/.editorconfig
>   create mode 100644 src/gallium/state_trackers/hgl/.editorconfig
>   create mode 100644 src/gallium/state_trackers/nine/.editorconfig
>   create mode 100644 src/gallium/state_trackers/xa/.editorconfig
>   create mode 100644 src/gallium/targets/d3dadapter9/.editorconfig
>   create mode 100644 src/gallium/targets/haiku-softpipe/.editorconfig
>   create mode 100644 src/gallium/winsys/freedreno/drm/.editorconfig
>   create mode 100644 src/gallium/winsys/nouveau/drm/.editorconfig
>   create mode 100644 src/gallium/winsys/radeon/drm/.editorconfig
>   create mode 100644 src/gallium/winsys/sw/hgl/.editorconfig
>   create mode 100644 src/getopt/.editorconfig
>   create mode 100644 src/gtest/.editorconfig
>   create mode 100644 src/hgl/.editorconfig
>   create mode 100644 src/mesa/drivers/dri/nouveau/.editorconfig
>   create mode 100644 src/mesa/drivers/dri/radeon/.editorconfig
>
> diff --git a/.editorconfig b/.editorconfig
> new file mode 100644
> index 0000000..eeb0875
> --- /dev/null
> +++ b/.editorconfig
> @@ -0,0 +1,40 @@
> +# To use this config on you editor, follow the instructions on:
> +# http://editorconfig.org
> +
> +root = true
> +
> +[*]
> +charset = utf-8

> +end_of_line = lf

I'm not sure this is a good idea, because git defaults to CRLF on 
Windows, so this might cause CRLF -> LF, making git think files have 
been changed.

I think it's better to remove this one for now.

> +insert_final_newline = true

> +trim_trailing_whitespace = true

I'm sure we have lots of files with trailing whitespace, and this means 
that people doing trivial one liner fixes might suddently cause the 
whole file to be munged and stripped.

So I think we should remove this from the top level editorconfig.  It's 
fine to have it on specific subdirs, which are know to be 
trailing-whitespace free.


I don't feel that strongly about insert_final_newline though.


> +max_line_length = 80

I think this might be pedantic nowaadas.

> +
> +[*.{c,h,cpp,hpp}]

.cc and .hh .  src/gtest/src has the former.

> +indent_style = space
> +indent_size = 3
> +
> +[{Makefile*,*.mk}]
> +indent_style = tab
> +
> +[*.py,SCons*]
> +indent_style = space
> +indent_size = 4
> +
> +[*.pl]
> +indent_style = space
> +indent_size = 4
> +
> +[*.m4]
> +indent_style = space
> +indent_size = 2
> +
> +[*.yml]
> +indent_style = space
> +indent_size = 2
> +
> +[*.patch]
> +trim_trailing_whitespace = false
> +
> +[*.{dsp,dsw,sln,vcproj}]
> +end_of_line = crlf
> diff --git a/bin/.editorconfig b/bin/.editorconfig
> new file mode 100644
> index 0000000..b9a948f
> --- /dev/null
> +++ b/bin/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.sh]
> +indent_style = space
> +indent_size = 2
> diff --git a/include/CL/.editorconfig b/include/CL/.editorconfig
> new file mode 100644
> index 0000000..da2afc4
> --- /dev/null
> +++ b/include/CL/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.{h,hpp}]
> +indent_style = space
> +indent_size = 4
> diff --git a/include/D3D9/.editorconfig b/include/D3D9/.editorconfig
> new file mode 100644
> index 0000000..0dcc752
> --- /dev/null
> +++ b/include/D3D9/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.h]
> +indent_style = tab
> diff --git a/include/c11/.editorconfig b/include/c11/.editorconfig
> new file mode 100644
> index 0000000..bdbea00
> --- /dev/null
> +++ b/include/c11/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.h]
> +indent_style = space
> +indent_size = 4
> diff --git a/include/d3dadapter/.editorconfig b/include/d3dadapter/.editorconfig
> new file mode 100644
> index 0000000..bdbea00
> --- /dev/null
> +++ b/include/d3dadapter/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.h]
> +indent_style = space
> +indent_size = 4
> diff --git a/include/vulkan/.editorconfig b/include/vulkan/.editorconfig
> new file mode 100644
> index 0000000..bdbea00
> --- /dev/null
> +++ b/include/vulkan/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.h]
> +indent_style = space
> +indent_size = 4
> diff --git a/src/egl/drivers/haiku/.editorconfig b/src/egl/drivers/haiku/.editorconfig
> new file mode 100644
> index 0000000..5ae8c6f
> --- /dev/null
> +++ b/src/egl/drivers/haiku/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.cpp]
> +indent_style = tab
> diff --git a/src/egl/wayland/.editorconfig b/src/egl/wayland/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/egl/wayland/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gallium/drivers/freedreno/.editorconfig b/src/gallium/drivers/freedreno/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/gallium/drivers/freedreno/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gallium/drivers/noop/.editorconfig b/src/gallium/drivers/noop/.editorconfig
> new file mode 100644
> index 0000000..a01ed77
> --- /dev/null
> +++ b/src/gallium/drivers/noop/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.c]
> +indent_style = tab
> diff --git a/src/gallium/drivers/r300/.editorconfig b/src/gallium/drivers/r300/.editorconfig
> new file mode 100644
> index 0000000..01e39c8
> --- /dev/null
> +++ b/src/gallium/drivers/r300/.editorconfig
> @@ -0,0 +1,3 @@
> +[*{c,h}]
> +indent_style = space
> +indent_size = 4
> diff --git a/src/gallium/drivers/r600/.editorconfig b/src/gallium/drivers/r600/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/gallium/drivers/r600/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gallium/drivers/radeon/.editorconfig b/src/gallium/drivers/radeon/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/gallium/drivers/radeon/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gallium/drivers/radeonsi/.editorconfig b/src/gallium/drivers/radeonsi/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/gallium/drivers/radeonsi/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gallium/drivers/vc4/.editorconfig b/src/gallium/drivers/vc4/.editorconfig
> new file mode 100644
> index 0000000..f3d8c47
> --- /dev/null
> +++ b/src/gallium/drivers/vc4/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.{c,h}]
> +indent_style = space
> +indent_size = 8
> diff --git a/src/gallium/drivers/vc4/kernel/.editorconfig b/src/gallium/drivers/vc4/kernel/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/gallium/drivers/vc4/kernel/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gallium/state_trackers/hgl/.editorconfig b/src/gallium/state_trackers/hgl/.editorconfig
> new file mode 100644
> index 0000000..f391def
> --- /dev/null
> +++ b/src/gallium/state_trackers/hgl/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h,cpp,hpp}]
> +indent_style = tab
> diff --git a/src/gallium/state_trackers/nine/.editorconfig b/src/gallium/state_trackers/nine/.editorconfig
> new file mode 100644
> index 0000000..7b12a40
> --- /dev/null
> +++ b/src/gallium/state_trackers/nine/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.{c,h}]
> +indent_style = space
> +indent_size = 4
> diff --git a/src/gallium/state_trackers/xa/.editorconfig b/src/gallium/state_trackers/xa/.editorconfig
> new file mode 100644
> index 0000000..7b12a40
> --- /dev/null
> +++ b/src/gallium/state_trackers/xa/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.{c,h}]
> +indent_style = space
> +indent_size = 4
> diff --git a/src/gallium/targets/d3dadapter9/.editorconfig b/src/gallium/targets/d3dadapter9/.editorconfig
> new file mode 100644
> index 0000000..7b12a40
> --- /dev/null
> +++ b/src/gallium/targets/d3dadapter9/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.{c,h}]
> +indent_style = space
> +indent_size = 4
> diff --git a/src/gallium/targets/haiku-softpipe/.editorconfig b/src/gallium/targets/haiku-softpipe/.editorconfig
> new file mode 100644
> index 0000000..f391def
> --- /dev/null
> +++ b/src/gallium/targets/haiku-softpipe/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h,cpp,hpp}]
> +indent_style = tab
> diff --git a/src/gallium/winsys/freedreno/drm/.editorconfig b/src/gallium/winsys/freedreno/drm/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/gallium/winsys/freedreno/drm/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gallium/winsys/nouveau/drm/.editorconfig b/src/gallium/winsys/nouveau/drm/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/gallium/winsys/nouveau/drm/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gallium/winsys/radeon/drm/.editorconfig b/src/gallium/winsys/radeon/drm/.editorconfig
> new file mode 100644
> index 0000000..7b12a40
> --- /dev/null
> +++ b/src/gallium/winsys/radeon/drm/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.{c,h}]
> +indent_style = space
> +indent_size = 4
> diff --git a/src/gallium/winsys/sw/hgl/.editorconfig b/src/gallium/winsys/sw/hgl/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/gallium/winsys/sw/hgl/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/getopt/.editorconfig b/src/getopt/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/getopt/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/gtest/.editorconfig b/src/gtest/.editorconfig
> new file mode 100644
> index 0000000..0880bac
> --- /dev/null
> +++ b/src/gtest/.editorconfig
> @@ -0,0 +1,3 @@
> +[*.{cc,h}]
> +indent_style = space
> +indent_size = 2
> diff --git a/src/hgl/.editorconfig b/src/hgl/.editorconfig
> new file mode 100644
> index 0000000..0a01d20
> --- /dev/null
> +++ b/src/hgl/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{cpp,h}]
> +indent_style = tab
> diff --git a/src/mesa/drivers/dri/nouveau/.editorconfig b/src/mesa/drivers/dri/nouveau/.editorconfig
> new file mode 100644
> index 0000000..cc8e11f
> --- /dev/null
> +++ b/src/mesa/drivers/dri/nouveau/.editorconfig
> @@ -0,0 +1,2 @@
> +[*.{c,h}]
> +indent_style = tab
> diff --git a/src/mesa/drivers/dri/radeon/.editorconfig b/src/mesa/drivers/dri/radeon/.editorconfig
> new file mode 100644
> index 0000000..a851cbe
> --- /dev/null
> +++ b/src/mesa/drivers/dri/radeon/.editorconfig
> @@ -0,0 +1,3 @@
> +# Coin toss?  Leaving this one empty (ie. global rules) for now because
> +# there are files with 3-spaces, 4-spaces and tab indentations.
> +# Tell me what you'd prefer if not the 3-space style of the rest of Mesa.
>



Otherwise looks good to me.


Jose



More information about the mesa-dev mailing list