# vis-editorconfig A [vis][vis] plugin for [editorconfig][ec]. [vis]: https://github.com/martanne/vis [ec]: http://editorconfig.org/ ## Installation You'll need the Lua wrapper for editorconfig-core installed. This can be done through luarocks: `luarocks install editorconfig-core` ```shell git clone https://github.com/seifferth/vis-editorconfig "$HOME/.config/vis/edconf" ``` Then add `require('edconf')` to your `visrc.lua`. You may use a different name for the local repository, if you like. You could, for instance, use `$HOME/.config/vis/vis-editorconfig` and `require('vis-editorconfig')`. Note, however, that the repository **must not** be called `editorconfig`. Since the editorconfig-core lua library is also called `editorconfig`, naming the repository `editorconfig` will cause name conflicts that result in infinite recursion. ## Functionality Not all editorconfig functionality is supported by vis and hence by this plugin. At this moment, there is full support for the following settings: - indent_style - indent_size - tab_width - insert_final_newline The following settings are implemented partially and / or support is turned off by default: - spell_language: This is not yet part of the editorconfig specification (cf. ), but it is implemented anyway. Since vis does not support spellchecking natively, this plugin will only set `vis.win.file.spell_language` to the specified value. It is then up to the spellchecking plugin to respect that variable. - trim_trailing_whitespace: Turned off by default, can be enabled via `:set edconfhooks on`. - end_of_line: Turned off by default, partial support can be enabled via `:set edconfhooks on`. Only `crlf` and `lf` are supported, plain `cr` is not. The implementation is also very basic. If end_of_line is set to `crlf`, a return character will be inserted at the end of each line that does not yet end with `crlf`. If end_of_line is set to `lf`, return characters at the end of a line will be stripped. While I would encourage every vis user to stick to `lf` terminated files, this might be convenient if, for some reason, they do need to compose `crlf` terminated files. - max_line_length: Turned off by default, partial support can be enabled via `:set edconfhooks on`. There is no straightforward way to automatically wrap content that might be written in arbitrary programming (or non-programming) languages. For that reason, vis-editorconfig doesn't even try. If max_line_length is enabled, vis-editorconfig issues a warning, however, indicating which lines are longer than the specified length. Note that you will miss this warning if you write your file with `:wq`, so if you care about it, write it with `:w:q`. The reason those last three settings are optional and turned off by default is their scalability. Each of those operations is implemented as a pre-save-hook with a complexity of O(n), where n is the filesize. Since vis is incredibly good at editing huge files efficiently, there seems to be a very real danger that those hooks could cause the editor to freeze just before a user's valuable changes are written to disk. You can turn support for those pre-save-hooks on or off at any time by running :set edconfhooks on or :set edconfhooks off If `edconfhooks` are enabled, they will be executed as configured in `.editorconfig`. If you want to take a less cautious approach and enable these hooks by default, simply add an additional line below the module import in `visrc.lua`: require('editorconfig/edconf') vis:command('set edconfhooks on') -- supposing you did previously -- require('vis')