Answers about Puppet, DevOps, Automation, Universe and Everything
Tip of the Week 96 - Editorconfig
This post, for once, is not strictly about Puppet, but about a nice, standard way to customise the behaviour of a text editor directly from within your source code repository.
Editorconfig is a file format that defines the coding style to use in an editor for the files of your repository.
It contains, in stanzas divided ini file format, various definitions to manage common editor settings:
indent_style- Indentation Style. Possible Values: tab, space
indent_size- Indentation Size (in single-spaced characters). Possible Values: an integer, tab
tab_width- Width of a single tabstop character. Possible Values: an integer (defaults to indent_size when indent_size is a number)
end_of_line- Line ending file format (Unix, DOS, Mac). Possible Values: lf, crlf, cr
charset- File character encoding. Possible Values: latin1, utf-8, utf-16be, utf-16le, utf-8-bom
trim_trailing_whitespace- Defines whether whitespace is allowed at the end of lines. Possible Values: true, false
insert_final_newline- Defines whether file should end with a newline. Possible Values: true, false
Some other settings are editor specific.
Editorconfig is supported by most of the existing editors either natively or via plugins.
Editors that support it out of the box: BBEdit, Codelite, elementaryCode, Builder, GitHub, Gogs, IntelliJidea, KText editor, Komodo, Kakoune, PyCharm, ReSharper, Rider, RubyMine, Source Lair, Tortoise Git, Visual Studio, Web Storm.
Editors that support it via a plugin: AppCode, Atom, Brackets, C Lion, Coda, Code::Block, Eclipse, Emacs, Geany, Gedit, jEdit, Micro, Net Beans, NodePad++, Php Storm, Sublime Text, Text Adept, Text Mate, Vim, Visual Studio Code.
An example is probably better than many works, so here’s our
.editorconfig file in our Psick control-repo. It applies to all the files of the repo, and, as you see, different settings can be defined according to the files name or extension.
[*] charset = utf-8 end_of_line = lf indent_style = space indent_size = 2 insert_final_newline = true trim_trailing_whitespace = true [*.md] max_line_length = off trim_trailing_whitespace = false
Have fun with your editor, Puppet, life, universe and everything!