From 173deff6a03bae1171e39ca8da916386ca9bbf67 Mon Sep 17 00:00:00 2001 From: Jonas Bernoulli Date: Mon, 17 Feb 2020 14:00:27 +0100 Subject: [PATCH] editorconfig: Don't misconfigure indentation for Emacs lisp files 1) It is fairly safe to assume that almost all edits to Emacs lisp files will be done using the Emacs editor, so there is no need to configure this in a way understood by other editors. 2) Trying to configure the intention of lisp code using editorconfig causes the indention to be wrong. Here "wrong" does not mean, "it uses tabs when everyone knows that spaces is the true path" (or vice-versa), but in the sense of "in lisp indentation is subject to the outer expression, and it has been like that for decades, but we are just going to ignore that completely and pretend this is actually python code". For example, if we insert a new line character between the 1 and 2 in (progn (progn 1 2) then there are only two ways to intend that correctly. (We use "." to represent a leading space and "<-->" to represent leading tabs. "<------>" for a tab when it is shown eight characters wide or "<>" if only two.) First correct way: (setq-local indent-tabs-mode t) (progn (progn 1 <------>......2)) Second correct way: (setq-local indent-tabs-mode nil) (progn (progn 1 ..............2)) With the old editorconfig configuration, [*.el] indent_style = tab indent_size = 2 max_line_length = 100 we get: (progn (progn 1 <><><><>.2)) This is not how `progn' is indented. No special indentation rules are defined for it so all arguments are supposed to be aligned. For `prog1' however special indentation are defined and if we replaced the second `progn' in this example with a `prog1', then this would actually be correct. This just demonstrate that it is wrong to indent everything the same for lisp; the reason that `progn' and `prog1' are indented differently communicates different meanings to the reader. I had faint hope that without setting `indent_size' things would work correctly, but no, [*.el] indent_style = tab max_line_length = 100 gives us: (progn (progn 1 <------>.......2)) That doesn't even make sense if we pretend to be looking at python code. Turns out that `indent_size' defaults to 2 even for lisp code as can be demonstrated by additionally doing, (setq-local tab-width 2) which gives us: (progn (progn 1 <>.......2)) which at least makes some sense. --- .editorconfig | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.editorconfig b/.editorconfig index a9c057c0..d7b5d392 100644 --- a/.editorconfig +++ b/.editorconfig @@ -34,8 +34,3 @@ max_line_length = 100 indent_style = tab indent_size = 8 max_line_length = 100 - -[*.el] -indent_style = space -indent_size = 2 -max_line_length = 100