feat: add elixir-ls compatible with version 1.11 (#15)
1. Clone `elixir-ls` and set it to version [v0.12.0](https://github.com/elixir-lsp/elixir-ls/blob/master/CHANGELOG.md#v0120-7-november-2022) 2. Set up `neovim` to check `elixir` current elixir version and use the appropriate `elixir-ls` Reviewed-on: #15
This commit is contained in:
parent
6f5f08e59a
commit
6c1a8e92bc
14
Dockerfile
14
Dockerfile
@ -176,6 +176,9 @@ RUN ${XDG_DATA_HOME}/rtx/bin/rtx plugins install \
|
|||||||
poetry \
|
poetry \
|
||||||
terraform
|
terraform
|
||||||
|
|
||||||
|
# NOTE (jpd): the section below exists mainly to handle a project running elixir 1.11.
|
||||||
|
# It allows the usage of openssl 1.1 and a compatible elixir-ls.
|
||||||
|
|
||||||
# configure openssl 1.1
|
# configure openssl 1.1
|
||||||
# this is needed to compile older erlang versions
|
# this is needed to compile older erlang versions
|
||||||
# example: KERL_CONFIGURE_OPTIONS="-with-ssl=${HOME}/.local/lib/ssl" asdf install
|
# example: KERL_CONFIGURE_OPTIONS="-with-ssl=${HOME}/.local/lib/ssl" asdf install
|
||||||
@ -188,3 +191,14 @@ RUN mkdir -p ${HOME}/.local/src \
|
|||||||
&& make \
|
&& make \
|
||||||
# && make test \
|
# && make test \
|
||||||
&& make install
|
&& make install
|
||||||
|
|
||||||
|
# fetch elixir-ls compatible with elixir 1.11.x
|
||||||
|
# to setup this project run the following commands:
|
||||||
|
# mix do local.rebar --force, local.hex --force
|
||||||
|
# mix do deps.get, deps.compile
|
||||||
|
# MIX_ENV=prod mix compile
|
||||||
|
# MIX_ENV=prod mix elixir_ls.release
|
||||||
|
RUN git clone https://github.com/elixir-lsp/elixir-ls.git ${LOCAL_SRC_HOME}/elixir-ls \
|
||||||
|
&& cd ${LOCAL_SRC_HOME}/elixir-ls \
|
||||||
|
&& git checkout tags/v0.12.0 \
|
||||||
|
&& cp .release-tool-versions .tool-versions
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
diff --git a/init.lua b/init.lua
|
diff --git a/init.lua b/init.lua
|
||||||
index 748e7f8..47e327a 100644
|
index 748e7f8145427b7f17639d4c9f978b9bbe47d2c9..7d05ed25928e7526b02da1671068cdaa24ebc240 100644
|
||||||
--- a/init.lua
|
--- a/init.lua
|
||||||
+++ b/init.lua
|
+++ b/init.lua
|
||||||
@@ -229,7 +229,7 @@ require('lazy').setup({
|
@@ -229,7 +229,7 @@ require('lazy').setup({
|
||||||
@ -107,3 +107,25 @@ index 748e7f8..47e327a 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
-- Setup neovim lua configuration
|
-- Setup neovim lua configuration
|
||||||
|
@@ -542,12 +574,20 @@ mason_lspconfig.setup {
|
||||||
|
|
||||||
|
mason_lspconfig.setup_handlers {
|
||||||
|
function(server_name)
|
||||||
|
- require('lspconfig')[server_name].setup {
|
||||||
|
+ local opts = {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
settings = servers[server_name],
|
||||||
|
filetypes = (servers[server_name] or {}).filetypes,
|
||||||
|
}
|
||||||
|
+ if server_name == 'elixirls' then
|
||||||
|
+ local version = vim.fn.system('rtx current elixir') or ''
|
||||||
|
+ local match_version = string.match(version, '^1.11')
|
||||||
|
+ if match_version ~= nil then
|
||||||
|
+ opts = vim.tbl_extend('keep', opts, { cmd = { vim.fn.expand('$LOCAL_SRC_HOME') .. '/elixir-ls/release/language_server.sh' } })
|
||||||
|
+ end
|
||||||
|
+ end
|
||||||
|
+ require('lspconfig')[server_name].setup(opts)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user