5 ms·
EditorConfig – file format for defining coding styles and text editor plugins
- lytedev 9y agoAt least in the JavaScript world, this was a lovely thing to have. Now we have linters which are even better! Still nice to include this so that all collaborators don't need to modify their editors to jump in!
- nmstoker 9y agoIt's the simple cross editor convenience this brings that really appeals to me.
- qntmfred 9y agoand now we have https://prettier.io/docs/en/why-prettier.html https://prettier.io/docs/en/why-prettier.html we can automatically enforce and fix all these style rules
- andreineculau 9y agoI haven't used prettier but eslint can also fix style
- manveru 9y agoAnd of course there's https://github.com/prettier/prettier-eslint https://github.com/prettier/prettier-eslint to fix it using both :)
- Siilwyn 9y agoDo not compare it to linters they serve a different purpose. Editorconfig is for using the right editor settings, linters are for programmatically checking and formatting code. So Editorconfig and a linter should be used together.
- qntmfred 9y agoI made this a standard for all my engineers years ago. anything I can do to automate consistency and "correctness" in coding style and let my team focus on doing the real work
- vortico 9y agoBefore clicking on the link, I thought "Oh, just another attempt at standardizing editor preferences from a file in a repo." But looking at their list of editors which natively support EditorConfig and the list of plugins for editors which don't, this is far better support than I imagined. This is it! Problem solved.
- Galanwe 9y agoHonestly I don't think much is solved by EditorConfig. I mean, the idea is great, but the small amount of parameters supported makes it pretty much useless. Indentation character and size, line termination, ... and that's all. I would need a hundred of these (like clang-format, yapf, etc have) to switch to EditorConfig. Unfortunately, looking at the commit log frequency, I doubt EditorConfig will ever have more than the 10 or so parameters that it already have.
- serkanyersen 9y agobut what more could it have? Editor config is not a "should there be a space between function name and parens" kind of tool. It's only meant to automatically configure your editor to use the defined tab/space newline preferences per file type. that's it.
- vortico 9y agoYes, it doesn't have many features, but most everything I might want should be defined elsewhere. Astyle configs should go in its own `.astylerc` file, Python style in `.style.yapf`, clang-format in `.clang-format`, build system in `Makefile` or `Gruntfile` or whatever is most common in your language, `.gitignore` for useless files, etc. But just for displaying a file perfectly, all that's needed is file encoding and indent width, and a couple other things EditorConfig defines. It's not supposed to be an "IDEConfig".
- SideburnsOfDoom 9y ago> Honestly I don't think much is solved by EditorConfig. No, it doesn't solve all the things. My experience is that it addresses one specific annoyance - team members checking in changes with varying line endings and spaces/tabs settings - and makes it a thing of the past. For solving that one thing, I like it a lot.
- Brajeshwar 9y agoEditorConfig is awesome, especially for a distributed remote team. I've standardized everyone whom I ever worked with few initial project settings and EditorConfig is such one must-do item. Been using it (I think) for the past 5 years or so.
- StavrosK 9y agoSame here, and I love it for another reason as well: It can configure my editor to have different indentation settings for different filetypes. No longer does JSON get the four spaces that Python does.
- andreineculau 9y agoThe companion would be eclint in order to lint as part of a git hook or CI test run https://github.com/jedmao/eclint https://github.com/jedmao/eclint
- duncan_bayne 9y agoI've evangelised this tool on every team I've worked with for years. It eliminates _so_ many forms of conflict and bikeshedding. (Plus I have contributed in a trivial way to the Emacs plugin; they very happily accept PRs).
- serkanyersen 9y agoPeople comparing EditorConfig to eslint or prettier does not really understand it's purpose. yes they have intersecting features, but EditorConfig's main feature is that it lets you set file type specific whitespace rules automatically, across almost all editors. - Most editors will have a global whitespace rule and you have to use that same rule for every file. - Some editors can be configured to have different rules per file type but then it can't be done per project. So every project has to use the same rules. - Some editors will let you configure all of these per project, but you have to save this project-settings file somewhere. Editor specific code is no good in the repo, so you need to maintain/backup it yourself. EditorConfig solves all of these issues for me.
- majewsky 9y agoLooks like 99% of this is covered by my editor being configured to autodetect existing indentation, and adjust itself accordingly: https://github.com/ciaranm/detectindent https://github.com/ciaranm/detectindent
- JetSpiegel 9y agoSee also vim-sleuth
- HyperMassive 9y agoI think you might be missing the point, not everyone (your collaborators) will use the same editor, the same white-space rules. And some developers couldn't care less about consistent code and quality at all. But having a EditorConfig file means writing none compliant code becomes a defiant choice.
- to3m 9y agoTypically the whitespace rules are part of the standards as well. Spaces after if, spaces after commas, spaces before stars, after stars, around stars, alignment, newlines, two spaces after a full stop in a comment, the full works. People have spent entire meetings trying to come to agreement on this stuff. And then afterwards people keep checking in stuff that's "wrong", not intentionally, but because they've spent literally their entire lives doing it the other way, and they're stuck with the muscle memory. If you want the computer to make your entire codebase look roughly the same, you'll need more than a .editorconfig file... (For C and C++, I've been quite pleased with clang-format, provided somebody else gets to set it up. Of course, as well as the code layout, it also sorts out tabs vs spaces, line ending type, and indent width.)
- mathw 9y agoEditorConfig's not about that kind of whitespace though. That's a language-specific thing, best solved with an autoformatting tool like the utterly magnificent one that comes with Go. I don't much care for Go the language, but shipping a formatter with the compiler is an utterly genius move.
- mrkgnao 9y ago"LSP for indentation" :)
- donatj 9y agoI prefer tabs to spaces, not here to argue, and editorconfig is read by GitHub and let's me change tabs to display as 4 spaces instead of eight. A major win. Also allows me to default their editor to tabs.
- gibbitz 9y agoThis is the main reason I use this, though I use 2 space tabs and my coworkers use 4 space tabs. Things get ugly without editorconfig playing cop. I also force it to show rulers. It doesn't make the other devs grow a conscience, tho.