On Fri, Mar 22, 2024 at 03:40:59PM -0700, Junio C Hamano wrote: > A question out of curiosity (because the answer does not affect any > conclusion): Does editorconfig attempt to cover any non-text files? Apparently they it does not differentiate binary files: https://github.com/editorconfig/editorconfig-core-js/issues/42 https://github.com/editorconfig/editorconfig/issues/285#issuecomment-267400370 > Two more questions that do affect the conclusions are: > > * Among the files we ship (i.e. "git ls-tree -r HEAD") and edit > with editors that honor .editorconfig settings, are there any > file that we do not want tab indentation other than *.py? $ git ls-tree -r HEAD | cut -f 2 | \ grep -vE '.*\.(c|h|sh|perl|pl|pm|txt)' | grep -v t/ \ | rev | cut -d . -f -1 | rev | sort | uniq -c | grep -vE '\<1\>' -> gives for a first approximation (much more if not filtering unique occurrences) 2 bash 2 el 8 gitattributes 15 gitignore 4 go 2 in 7 js -> git-gui + git-web 8 md 2 png 41 po 2 pot 14 sample 41 tcl -> git-gui 5 xsl 5 yml -> ci stuff Not sure which one among those don't want the same tab-indent settings though. > > * Does .editorconfig file allow possibly conflicting setting, with > a reliable conflict resolution rules? Yeah it does: https://spec.editorconfig.org/#id8 TL;DR: - from top to bottom, last matching section wins - if multiple .editorconfig are found (up until one with the root key or in /) closest to the file wins. > > What I am trying to get at is if it is possible to make something > along this line to work: > > [*] > charset = utf-8 > insert_final_newline = true > indent_style = tab > tab_width = 8 > [*.py] > indent_style = space > indet_size = 4 > > I am assuming, without knowing, that the conflict resolution rule > may be "for the same setting, the last match wins" so by default we > always use "indent_style = tab", but if we are talking about a Python > script, it is overruled with "indent_style = space". So it looks like it's possible, if we also add judiciously .editorconfig in subdirectory where we have other files which don't want the same settings, probably: - po/ - t/ - contrib/ - .github/ - ... Not sure if that's easier than adding stuff to the to the root config though. -- Max Gautier