Emacs - Elixir Setup Configuration Wiki

exunit is available in melpa, so it could be installed via package-install

2 Likes

Thanks for putting this together! Is it recommended for Spacemacs users to add dotspacemacs-excluded-packages '(alchemist) ?

I know there was also an attempt to update Alchemist to use elixir-ls, maybe the alternative is to add an option to the spacemacs layer that would implement most of this.

2 Likes

Thanks! I’ve updated the instructions to include that.

1 Like

Your welcome! Yes it is (at least IMO), and I realized that I forgot that portion of the required configuration. Adding it to the wiki now.

There were actually two attempts by @trevoke:

But they ultimately became stale and were never merged into alchemist.el (hence not being recommended in this wiki).

It is a good idea to update the spacemacs +lang/elixir layer to switch from alchemist to a properly configured lsp-mode (which had completely slipped my mind until you mentioned it). I would assume it’s okay for +lang/elixir to depend on the lsp layer but we’ll have to see if that flies with the spacemacs team.

1 Like

I’m Eglot’s author. I stumbled upon this. Just wanted to say here that it is nonsense to call the section “Eglot configuration”, because Eglot is a completely different LSP client for Emacs. It’s setup is also much simpler, it’s probably just

(package-install 'eglot)
(add-to-list 'eglot-server-programs (elixir-mode "path-to-exilir-ls-executable"))

And then type M-x eglot in any elixir file.

4 Likes

Welcome to the forum and thanks for contributing :slight_smile:. I have restructured the sections to make it more obvious that you should use either Eglot or lsp-mode since they provide the same functionality. Looks like I initially missed eglot in the overview section as well (which I have now rectified).

Thanks! That is much simpler, so I’ve updated the instructions to that. Since I haven’t tried using eglot I just copied the configuration instructions from this other forum post which links to this gist (which it looks like you found already :smile:).

2 Likes

@axelson lsp-mode also have debugger support for Elixir via dap-mode. The configuration is simple as the configuration of lsp-mode:

Install dap-mode and then:

(require 'dap-elixir)
(dap-ui-mode)
(dap-mode)

3 Likes

Thanks! Added! And welcome to the forum as well :slight_smile:

1 Like

Hello, instructions regarding eglot half-worked for me. With OTP 21 elixir_ls server crashes, looks like it’s required OTP 20. I recompiled it and now eglot connected to the language_server (ran from release/language_server.sh (not dist folder)

EDIT: I also created the release with MIX_ENV=prod mix elixir_ls.release – not sure if that helps :slight_smile:

1 Like

Thanks! I committed an asdf .tool-versions file and added elixir and erlang versions to the readme. I’m using 1.6.6 with erlang 20.2.4. Updated the instructions (changed dist to release as well).

1 Like

Thanks to you! :wink:

Is this true? I am an Elixir LS user myself (in VSCode instead of Emacs, but this applies equally) and it is true that the Elixir LS repository has many open PRs waiting to be merged.
It would be great to know whether the original author has really abandoned the repository or whether he has temporally paused the work.

@JakeBecker is unresponsive here, at GitHub and on slack, so I think we can safely assume he has abondoned the project, if not elixir as a whole…

1 Like

Hi!

Sorry I’ve been unresponsive. I’ve been feeling burnt out on maintaining ElixirLS and have not been active in responding to people, but I plan to catch up on PRs soon. I’ll continue to try to fix breaking bugs quickly, but minor bugs and feature requests are going on the back-burner. I know that can be frustrating – apologies to anyone who’s tried to contribute and been unable to get ahold of me.

10 Likes

I’m glad to hear that! ElixirLS is an important and valued project :slight_smile:

1 Like

After things are moving now, would you mind getting in touch and join forces with the new elixir-lsp group on github? I’d prefer if we keep friction low and avoid a community split…

4 Likes

@axelson first thanks for taking the time to write this guide, I’m getting an error with eglot,

(Spacemacs) Error in dotspacemacs/user-config: Symbol’s value as variable is void: eglot-server-programs

I’m writting the configuration inside the user-config (not sure if it’s the best place for this)

  (add-to-list
   'eglot-server-programs
   '(elixir-mode  "/home/yo/Descargas/proj/elixir/elixir-ls/rel"))
  )


I’ve tried different ways

  (add-to-list
   'eglot-server-programs
   '(elixir-mode  "/home/yo/Descargas/proj/elixir/elixir-ls/rel/language_server.sh"))
  )

(add-to-list
 'eglot-server-programs
'(elixir-mode . ("sh"  "/home/yo/Descargas/proj/elixir/elixir-ls/rel/language_server.sh")))

but no one works for me…do you know which could be the issue here?..thank you

1 Like

hi guy, thanks to joao I can activate eglot and seems working fine

https://github.com/joaotavora/eglot/issues/238

now I’m a bit stuck with the lsp-mode, I’m using spacemacs, so I add lsp to my configuration layers, after restart nothing happen, so I try the vanilla way, I add lsp-mode to my packages and the config, nothing happen again, when I open an elixir file I don’t get any alert…

I install lsp-elixir.el and now when I open an elixir file finally seems it runs…but I get an error: No LSP for elixir-mode

my lsp configuration is inside user-config and is


  (use-package lsp-mode
    :commands lsp
    :ensure t
    :diminish lsp-mode
    :hook
    (elixir-mode . lsp)
    :init
    (add-to-list 'exec-path "/home/yo/Descargas/proj/elixir/elixir-ls/rel/language_server.sh"))


is it correct?..thank you

by the way, the eglot error was that I was missing the line
(require 'eglot)

before the configuration…not sure if your guide must be update with this info

thank you

UPDATE
ok…seems that I was missing the line (choose 1) and I installed both, eglot seems run and working but I don’t get autocompletion with spacemacs, I think that autocompletion is the most required featured for me so if you guys use spacemacs and eglot, I’ll appreciate any help…thank ypu

I’m glad you were able to get eglot installed successfully! Also I just made the “(choose 1)” section bold so hopefully that’ll help next time :slight_smile:

My understanding of eglot is admittedly incomplete (as I use lsp-mode), but I think eglot tries to be less in your face by default and you may need to install company-mode to get auto-completion: https://github.com/company-mode/company-mode

yes, thank you @axelson, after run company mode I get an awesome autocomplete, but seems that flymake is not working for me…I don’t get any error warning, flymake or flycheck works ok with lsp-mode? would be great include some gif about the different lsp features running…

second question: are you using spacemacs?..not sure but seems that they remove the lsp layer…I always get
Warning: Unknown layer lsp declared in dotfile.

the only way it works for me (or at least he tried to load, because he then failed to tell me that there was no lsp server) was installing this like an additional packges…

1 Like