I’m using some asynchronous linting plug-ins for Vim8 and I’m finding myself annoyed by the fact that they compile to _build/
which breaks Phoenix reload, etc. I found this comment by José:
It is best if editors run their commands on a separate _build directory. It that is not easily doable today, let’s find a way to make it so.
The only way that I can see that this might work right now is if I modify my mix.exs
so that the project build_path
is something like System.get_env("EDITOR_MIX_BUILD_PATH", "build_path")
and remembering to set (either directly or through something like direnv
) the EDITOR_MIX_BUILD_PATH
variable to something like .vim_build
instead of _build
.
Is there any other way to do this (e.g., mix compile --build-path .vim_build
), because the Vim plug-ins I’m using aren’t really using the mix configuration except the build tools.
I’m currently using Neomake for those interested. It’s similar to Ale, but Ale’s linter policy—run everything by default—combined with a stated non-desire to make it easy to find out what linters are available and active, means that if you have dialixir installed, your computer will be brought to its knees with twenty instances of mix dialyzer
. Neomake doesn’t currently have a dialixir plug-in, but it offers a relatively simple way to discover what’s available (neomake#ft#makers#elixir#EnabledMakers()
) and then remove the ones you don’t want. (If a dialyzer plug-in does show up, I’m going to argue very heavily that it should not be enabled by default—and that it should explicitly be opt-in.)