Elixir-tools - a suite of developer tooling and packages for Elixir developers

elixir-tools is a suite of developer tooling and packages for Elixir developers.

Website: https://www.elixir-tools.dev
GitHub: elixir-tools · GitHub


Past News:

Today’s News:

Howdy folks! I haven’t posted about elixir-tools on the forum yet, so getting a topic started here.

Today I released The elixir-tools Update Vol. 3 , which details all the updates to the Next LS and the various tools in the elixir-tools family that haven’t happened in the last ~6 weeks.

Take care!


Next LS v0.13


I’m wondering what the rationale is for Next LS or the trade-offs related to ElixirLS? It’s not apparent what’s compelling the development of another Elixir Language Server. This isn’t to say that it’s a pointless effort, just that I don’t understand why, as a possible user, I might care or what I’m missing concerning your effort?

I couldn’t readily see the rationale question answered in answered in the docs, README, etc. so just trying to understand.


There’s an episode of the thinking elixir podcast where he goes in depth into what you are asking:

1 Like

I don’t want to start any wars here, but I will say that I’m super excited for Next LS.

Elixir LS works for me, most of the time, but the bugs and random issues are really frustrating. I have to delete the compiled Elixir LS files about 2-5 times a week. If Mitch can solve those by giving a better foundation (build more features in future more easily, support new Elixir / OTP versions more easily, etc.), then I’m really excited to fully switch to Next LS one day.


Eh, I admit I’m not keen on the audio format. I would love to have that rationale written down somewhere.

And I too am not convinced we need to have more than one language server. Were there really such irreconcilable differences that mandated an entirely new project? What’s wrong with contributing to ElixirLS?


I’m listening now so I can tell you when I’m done :upside_down_face:

EDIT: nvm, I see Mitch is responding.

Thanks for the questions (and answers!) everyone!

I get this question a couple times every time I post an update, so this week I’ll write up a piece on the story of how elixir-tools came to be.


Good, thank you. I’ll read it very carefully.

You should still post your impressions. Knowing you, it will turn out to be valuable feedback.

1 Like

Awe, that’s nice of you to say—I feel I’ve been saying some pretty boneheaded things around here in the past few weeks :sweat_smile:

I’m still listening and working at the same. Honestly, I just finally took the plunge to move from Vim to Neovim a few days ago. It’s a bit bittersweet, but ElixirLS is certainly quite nice, but it’s my first experience with language servers, period. I have not tried NextLS yet. So, as it stands, I may defer to others with more experience, but I’ll see.

I want to echo this. I run into the same problem and others. NextLS although it’s not currently as featureful, is more reliable. I’ll definitely be switching if it stays on this path.


Been switching my work, and personal machine to NextLS and so far it’s been a great experience!

I also wanted to just drop by and say thank you for being one of the largest projects (that I know of!) using Burrito to ship Elixir to end-users. It’s been incredibly valuable in finding bugs and improving compatibility across multiple platforms! :tada::tada::tada:


2 posts were split to a new topic: Split from “Elixir-tools - a suite of developer tooling and packages for Elixir developers”

6 posts were merged into an existing topic: Split from “Elixir-tools - a suite of developer tooling and packages for Elixir developers”

It seems, it doesn’t work even with minimal elixir project (mix new test_next_ls):

[server-notification] Wed Oct  4 13:06:26 2023:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:message "[NextLS] Runtime for folder ~/src/elixir/test_next_ls/ failed to initialize" :type 1))
[server-notification] Wed Oct  4 13:06:26 2023:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:message "[NextLS] The runtime for ~/src/elixir/test_next_ls/ has crashed with reason: false" :type 1))
[stderr] 13:08:26.619 [error] GenServer #PID<0.761.0> terminating
[stderr] ** (stop) false
[stderr] Last message: {:cancel, false}
[stderr] State: %{logger: #PID<0.260.0>, name: "~/src/elixir/test_next_ls/", parent: ~c"g1h3JW5leHQtbHMtMTY5NjQxMzc0NTEyNDU1OTQ5N0Bsb2NhbGhvc3QAAAELAAAAAGUdODI=", port: #Port<0.492>, registry: NextLS.Registry, errors: nil, task_supervisor: :runtime_task_supervisor, on_initialized: #Function<34.22965326/1 in NextLS.handle_notification/2>, working_dir: "/home/igor/src/elixir/test_next_ls", compiler_refs: %{}}

My env is emacs 29.1, eglot 1.15, erlang 26.1.1, elixir 1.15.6 (under Guix System).

eglot config:

(with-eval-after-load 'eglot
  (add-to-list 'eglot-server-programs
               `((elixir-ts-mode heex-ts-mode elixir-mode) .
                 ("~/src/elixir/next-ls/bin/start" "--stdio=true"))))

What can be wrong with my setup?

elixir-ls works fine.

1 Like

would you mind opening a github issue?

but please include your operating system as well (unless Guix is the OS. i’m not familiar with it)

Just tried myself with emacs 29.1 and the git ef21d4054bd2cc455fa828f88053431c9592b574 . I’m also getting failure to initialize. No crash though, just timeouts.

[server-notification] Wed Oct  4 09:37:39 2023:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:message "[NextLS] Runtime for folder ~/current/proj1/ failed to initialize" :type 1))
[client-request] (id:15) Wed Oct  4 09:37:39 2023:
(:jsonrpc "2.0" :id 15 :method "textDocument/hover" :params
           (:uri "file:///parser.ex")
           (:line 12 :character 11)))
[internal] (id:15) Wed Oct  4 09:37:49 2023:
(:timed-out :textDocument/hover :id 15 :params
             (:uri "file:///parser.ex")
             (:line 12 :character 11)))

I might know the problem actually, can look into it more later today.

do you know if you are using TRAMP?