Elixir 1.6 introduced the formatter: mix format. This plugin makes it easy to
run the formatter asynchronously from within Vim 8 and Neovim.
Use your favorite plugin manager, e.g. vim-plug:
Plug 'mhinz/vim-mix-format'
-
To format the current file, use
:MixFormat. 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.]cand[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
:messages.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'
When using :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
source window:
autocmd User MixFormatDiff wincmd pIf you like this plugin, star it! It helps me deciding which projects to spend more time on.
