aboutsummaryrefslogtreecommitdiffstats
path: root/lsp/elixirls.lua
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2025-09-03 21:00:17 -0400
committerGitHub <noreply@github.com>2025-09-03 18:00:17 -0700
commitd9e7713044edff63400c7b79e91e967a2a2f9817 (patch)
tree4eec6db1fe2eead44a888a4fad4096d15e2c8589 /lsp/elixirls.lua
parentdocs: update configs.md (diff)
downloadnvim-lspconfig-d9e7713044edff63400c7b79e91e967a2a2f9817.tar
nvim-lspconfig-d9e7713044edff63400c7b79e91e967a2a2f9817.tar.gz
nvim-lspconfig-d9e7713044edff63400c7b79e91e967a2a2f9817.tar.bz2
nvim-lspconfig-d9e7713044edff63400c7b79e91e967a2a2f9817.tar.lz
nvim-lspconfig-d9e7713044edff63400c7b79e91e967a2a2f9817.tar.xz
nvim-lspconfig-d9e7713044edff63400c7b79e91e967a2a2f9817.tar.zst
nvim-lspconfig-d9e7713044edff63400c7b79e91e967a2a2f9817.zip
docs, lint #4055
Diffstat (limited to 'lsp/elixirls.lua')
-rw-r--r--lsp/elixirls.lua10
1 files changed, 8 insertions, 2 deletions
diff --git a/lsp/elixirls.lua b/lsp/elixirls.lua
index 2876ad28..da7b7b31 100644
--- a/lsp/elixirls.lua
+++ b/lsp/elixirls.lua
@@ -12,7 +12,9 @@
--- 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.
+--- **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
--- vim.lsp.config('elixirls', {
@@ -24,13 +26,17 @@
--- })
--- ```
---
---- '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.
+--- '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.
---@type vim.lsp.Config
return {
filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },
root_dir = function(bufnr, on_dir)
local fname = vim.api.nvim_buf_get_name(bufnr)
+ --- Elixir workspaces may have multiple `mix.exs` files, for an "umbrella" layout or monorepo.
+ --- So we specify `limit=2` and treat the highest one (if any) as the root of an umbrella app.
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)