From 6c1a8e92bcabd6050e0dfaeaa1a09e26aaba5ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Dubas?= Date: Mon, 13 Nov 2023 11:33:09 +0000 Subject: [PATCH] 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: https://gitea.dubas.dev/joao.dubas/ide/pulls/15 --- Dockerfile | 14 ++++++++++++++ patch/kickstart.nvim/updates.patch | 24 +++++++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b00fc17..d2acd84 100644 --- a/Dockerfile +++ b/Dockerfile @@ -176,6 +176,9 @@ RUN ${XDG_DATA_HOME}/rtx/bin/rtx plugins install \ poetry \ 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 # this is needed to compile older erlang versions # example: KERL_CONFIGURE_OPTIONS="-with-ssl=${HOME}/.local/lib/ssl" asdf install @@ -188,3 +191,14 @@ RUN mkdir -p ${HOME}/.local/src \ && make \ # && make test \ && 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 diff --git a/patch/kickstart.nvim/updates.patch b/patch/kickstart.nvim/updates.patch index 40419cf..06ee2a9 100644 --- a/patch/kickstart.nvim/updates.patch +++ b/patch/kickstart.nvim/updates.patch @@ -1,5 +1,5 @@ diff --git a/init.lua b/init.lua -index 748e7f8..47e327a 100644 +index 748e7f8145427b7f17639d4c9f978b9bbe47d2c9..7d05ed25928e7526b02da1671068cdaa24ebc240 100644 --- a/init.lua +++ b/init.lua @@ -229,7 +229,7 @@ require('lazy').setup({ @@ -107,3 +107,25 @@ index 748e7f8..47e327a 100644 } -- 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, + } +