aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig/configs/elixirls.lua
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2024-10-01 05:39:12 -0700
committerGitHub <noreply@github.com>2024-10-01 05:39:12 -0700
commitbedb2a0df105f68a624a49b867f269b6d55a2c89 (patch)
tree877aa3ef8277575a7ffea1ff8f280eeb69b47489 /lua/lspconfig/configs/elixirls.lua
parentdocs: CONTRIBUTING.md cleanup (diff)
downloadnvim-lspconfig-bedb2a0df105f68a624a49b867f269b6d55a2c89.tar
nvim-lspconfig-bedb2a0df105f68a624a49b867f269b6d55a2c89.tar.gz
nvim-lspconfig-bedb2a0df105f68a624a49b867f269b6d55a2c89.tar.bz2
nvim-lspconfig-bedb2a0df105f68a624a49b867f269b6d55a2c89.tar.lz
nvim-lspconfig-bedb2a0df105f68a624a49b867f269b6d55a2c89.tar.xz
nvim-lspconfig-bedb2a0df105f68a624a49b867f269b6d55a2c89.tar.zst
nvim-lspconfig-bedb2a0df105f68a624a49b867f269b6d55a2c89.zip
refactor: rename "server_configurations" => "configs" #3330
Problem: The name `server_configurations` is extremely verbose and irritatingly formal and dogmatic. This overlong name is a constant nuisance when reading, writing, and coding. It's also not even correct: these configurations are just as much "client" configurations as they are "server" configurations. Solution: - Rename to a shorter name. - Leave placeholder files for any old URLs that link to the old location.
Diffstat (limited to 'lua/lspconfig/configs/elixirls.lua')
-rw-r--r--lua/lspconfig/configs/elixirls.lua44
1 files changed, 44 insertions, 0 deletions
diff --git a/lua/lspconfig/configs/elixirls.lua b/lua/lspconfig/configs/elixirls.lua
new file mode 100644
index 00000000..3172f6a8
--- /dev/null
+++ b/lua/lspconfig/configs/elixirls.lua
@@ -0,0 +1,44 @@
+return {
+ default_config = {
+ filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },
+ root_dir = function(fname)
+ local matches = vim.fs.find({ 'mix.exs' }, { upward = true, limit = 2, path = fname })
+ local child_or_root_path, maybe_umbrella_path = unpack(matches)
+ local root_dir = vim.fs.dirname(maybe_umbrella_path or child_or_root_path)
+
+ return root_dir
+ end,
+ single_file_support = true,
+ },
+ docs = {
+ description = [[
+https://github.com/elixir-lsp/elixir-ls
+
+`elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running).
+
+```bash
+curl -fLO https://github.com/elixir-lsp/elixir-ls/releases/latest/download/elixir-ls.zip
+unzip elixir-ls.zip -d /path/to/elixir-ls
+# Unix
+chmod +x /path/to/elixir-ls/language_server.sh
+```
+
+**By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of your unzipped elixir-ls.
+
+```lua
+require'lspconfig'.elixirls.setup{
+ -- Unix
+ cmd = { "/path/to/elixir-ls/language_server.sh" };
+ -- Windows
+ cmd = { "/path/to/elixir-ls/language_server.bat" };
+ ...
+}
+```
+
+'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching directories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella app. Otherwise the directory containing the single mix.exs that was found is chosen.
+]],
+ default_config = {
+ root_dir = '{{see description above}}',
+ },
+ },
+}