Elixir 1.6 introduced the formatter:
mix format. This plugin makes it easy to
run the formatter asynchronously from within Vim 8 and Neovim.
To format the current file, use
:verb MixFormatto see the exact shell command used.
The formatter is not perfect yet, so
:MixFormatDiffwill open a diff window that can be used for previewing the changes or picking only those that seem reasonable.
dppushes changes from the diff window to the source file.
qcloses the diff window.
[cjump between the changes.
If you're not used to Vim's diff mode, watch this screencast.
Automatically format on saving.
let g:mix_format_on_save = 1
Set options for the formatter. See
mix help formatin the shell.
let g:mix_format_options = '--check-equivalent'
By default this plugin opens a window containing the stacktrace on errors. With this option enabled, there will be just a short message in the command-line bar. The stacktrace can still be looked up via
let g:mix_format_silent_errors = 1
If you're not using Elixir 1.6 in your project, but want to use the formatter anyway, you can specify the bin directory of an alternative Elixir installation:
let g:mix_format_elixir_bin_path = '~/repo/elixir/bin'
:MixFormatDiff, a new diff window will be opened and an user event
is emitted. It can be used to set different settings or switch back to the
autocmd User MixFormatDiff wincmd p
If you like this plugin, star it! It helps me deciding which projects to spend more time on.