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 MixFormat
to see the
exact shell command used.
The formatter is not perfect yet, so :MixFormatDiff
will open a diff window
that can be used for previewing the changes or picking only those that seem
reasonable.
dp
pushes changes from the diff window to the source file. q
closes the diff
window. ]c
and [c
jump 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 format
in 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 p
If you like this plugin, star it! It helps me deciding which projects to spend more time on.