Can I point elixir-lsp to built-in module sources?

It would be nice to be able to use jump-to-definition for the built-in modules. I installed elixir with asdf, and see that I have the module source at /~.asdf/installs/elixir/1.12.2-otp-24/lib/elixir/lib.

Is there a way to configure elixir-lsp so it can find these? I’m using it with the ElixirLS vs code plugin.

Hi! This is something that does work once you’ve done some setup. Jump to definition is only available if you install elixir from source. I believe the steps to follow are roughly something like this:

  1. clone the elixir github repository
  2. Optionally check out a specific tag
  3. run make compile
  4. In the root of your project run asdf local elixir path:/path/to/elixir/ (where the path is the path to the github repo in step 1)
  5. In the root of your project run rm -rf _build .elixir_ls
  6. Open/restart your editor
  7. Wait for the build to complete

Great, thanks. I shall try that shortly.

Meanwhile, out of interest: is the need to install from source fundamental to how elixir-ls works? Or, if you have sources available in some other way (eg. via the asdf elixir plugin), could elixir-ls (with some enhancement or other) be configured to use those for jump to definition? I can see advantages - eg. personally, I’d rather asdf take care of elixir for me. If it is feasible, perhaps I’ll add an issue to that effect. I’d consider a PR though that may be beyond me.

Terrific, that worked perfectly. I was expecting a monstrous compile, but it was quick. Perhaps installing elixir from source isn’t such a bad idea.

1 Like

I think it might be possible, but I’m not sure that we could make it very reliable. But I’m glad you got it working by using the Elixir source!

1 Like