diff options
author | Jon Parise <jon@indelible.org> | 2018-09-28 11:42:50 -0700 |
---|---|---|
committer | Jon Parise <jon@indelible.org> | 2018-10-11 08:31:12 -0700 |
commit | 7eae7812915602ece637714e6f82d4551e9697b6 (patch) | |
tree | 66982c439b1f386dc691be877f25547cea209fa8 /ale_linters/elixir | |
parent | 87986520d62c497fbbde94e2e6bed35f5489cfcd (diff) | |
download | ale-7eae7812915602ece637714e6f82d4551e9697b6.zip |
Add elixir-ls language server support
ElixirLS (https://github.com/JakeBecker/elixir-ls) is an LSP server for
Elixir. It's distributed as a release package that can be downloaded
from https://github.com/JakeBecker/elixir-ls/releases or built locally.
The easiest way to start it is via Unix- and Win32-specific helper
scripts, so that's the basis of this command integration. Alternatively,
we could implement the contents of those platform-specific scripts in
the linter's command callback in a language-neutral way, but there isn't
any benefit to doing that aside from eliminating the platform check, and
that could prove to be too tight of a coupling going forward.
Diffstat (limited to 'ale_linters/elixir')
-rw-r--r-- | ale_linters/elixir/elixir_ls.vim | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/ale_linters/elixir/elixir_ls.vim b/ale_linters/elixir/elixir_ls.vim new file mode 100644 index 00000000..d5ad7cfc --- /dev/null +++ b/ale_linters/elixir/elixir_ls.vim @@ -0,0 +1,19 @@ +" Author: Jon Parise <jon@indelible.org> +" Description: elixir-ls integration (https://github.com/JakeBecker/elixir-ls) + +call ale#Set('elixir_elixir_ls_release', 'elixir-ls') + +function! ale_linters#elixir#elixir_ls#GetExecutable(buffer) abort + let l:dir = ale#path#Simplify(ale#Var(a:buffer, 'elixir_elixir_ls_release')) + let l:cmd = ale#Has('win32') ? '\language_server.bat' : '/language_server.sh' + + return l:dir . l:cmd +endfunction + +call ale#linter#Define('elixir', { +\ 'name': 'elixir-ls', +\ 'lsp': 'stdio', +\ 'executable_callback': 'ale_linters#elixir#elixir_ls#GetExecutable', +\ 'command_callback': 'ale_linters#elixir#elixir_ls#GetExecutable', +\ 'project_root_callback': 'ale#handlers#elixir#FindMixProjectRoot', +\}) |