Per-Project Whitespace with EditorConfig
Standards can change from project to project. Single quotes or double quotes? MooTools, Dojo, or micro-frameworks? And then the question that has started wars: spaces or tabs? I'm a tab guy myself but the team that I work on has set a two-space standard. It's not my preference but it was a team decision so I have to drink the Kool-Aid. I still want to use my typical tab whitespace on other projects but just this one project should use spaces. I thought this would be a nightmare but enter EditorConfig, a utility with plugins for several text editors which allows developers to specify settings per project.
Start by creating a .editorconfig and placing it at the root of the project which you'd like to create whitespace for:
touch .editorconfig
Once the file is in place, it's up to you to set the spacing settings per file type as you wish:
# EditorConfig is awesome: http://EditorConfig.org # top-most EditorConfig file root = true # Unix-style newlines with a newline ending every file [*] end_of_line = lf insert_final_newline = true # 4 space indentation [*.py] indent_style = space indent_size = 4 # Tab indentation (no size specified) [*.js] indent_style = tab # Indentation override for all JS under lib directory [lib/**.js] indent_style = space indent_size = 2
So not only can you set spacing per project but you can set them per file too. I've found EditorConfig to be a lifesaver as I can code per usual without having to think about spaces or tabs. EditorConfig made my day!
In Notepad++ you can change the indent behaviour clicking on Preferences / Tab Settings and defining the tab width and characters as a general behaviour or on a per language basis.
Yeah, nearly every editor and IDE worth its salt can do this.
But you’re missing the point. EditorConfig is most useful in a COLLABORATIVE development project, where you have a multitude of devs and a multitude of IDEs/editors. EditorConfig attempts to establish a common standard for IDE/editors to enforce whitespace rules.
I recently started a repo of my editorconfig, lint config, and sublime text user preferences, this way I always have them and can keep several machines in sync.
https://github.com/PeteSchuster/dot-config-files