Vim integration for the Elixir formatter.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc Doc: add g:mix_format_options Jan 20, 2018
ftplugin Temporarily reset &undoreload Apr 19, 2018
LICENSE Add LICENSE Nov 1, 2017
README.md README: mention the asynchronous execution Jan 22, 2018
demo.gif Add demo.gif Nov 3, 2017

README.md

vim-mix-format

Elixir 1.6 introduced the formatter: mix format. This plugin makes it easy to run the formatter asynchronously from within Vim 8 and Neovim.

demo

Installation

Use your favorite plugin manager, e.g. vim-plug:

Plug 'mhinz/vim-mix-format'

Commands

  • To format the current file, use :MixFormat.

  • 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.

Options

  • 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'

Customization

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

Feedback

If you like this plugin, star it! It helps me deciding which projects to spend more time on.