Nezteb
I frequently switch between ElixirLS, Lexical, and Next LS in order to test each out and compare/contrast. I decided to create a brief feature comparison matrix with some of my findings: Elixir Language Server Comparisons · GitHub
I reached out to some authors and devs familiar with each tool in order to be as fair as possible. Each of these tools is a large undertaking and takes tons of time and effort from the maintainers. A simple 2D comparison table can’t tell the whole story, so take it with a grain of salt. I’ll be doing my best to maintain and update the list as tooling evolves and adds/changes functionality. ![]()
Trending in Dev Env & Tools
Other Trending Topics
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself.
My main conc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
mhanberg
Thanks for putting that together!
tcoopman
That’s really cool. One thing I think none of the language servers support right now is working inside liveview sigils, things like go to definition, hover,…
That’s something that might be useful to track as well?
kwando
Oh yes, go to definition on HEEX components would be magical
Terbium-135
I’ve asked over on discord in the editor-tooling channel just a few days ago.
As far as I understood it doesn’t look promising
Quoting icecreamcohen here
tcoopman
Also referencing this issue on elixir-ls: Add support for function components · Issue #804 · elixir-lsp/elixir-ls · GitHub
The stance of elixir-ls is that this should be implemented separately, so I guess, it’s not something we’re going to see immediately.
To bad, go to reference on a function component would be so useful
sbuttgereit
Hi–
Not sure where you’d like specific content discussion (here or in the GitHub comments section).
A couple notes:
Including which mainstream editors have packages for simple installation would be useful in the list.EDIT: sorry I was just blind… you’ve got it.I have anecdotal experience that ElixirLS works with monorepos, depending on exactly what you mean by monorepo support. My current project is a monorepo style project with many Elixir projects inside the “project workspace” of my editors. I have have worked this in both VSCode and in my current editor, Sublime Text. Here’s a screenshot of a few sample directories in the larger project workspace; note the
.elixir_lsbuilt in the root of each Elixir project:mhanberg
That works, but it starts up an Elixir LS instance for each project.
With “workspace folders” support (which is what is meant by “monorepo support”), the editor will boot up a single language server instance to handle all of the projects.
sbuttgereit
Hmmm… at some level, for a checklist like the OP published, this feels like an odd dividing line between “monorepo support: yes” vs. “monorepo support: no or unknown”. My sense is that it conflates a feature, can the tool be used with monorepos, with the implementation details of how the feature is implemented. As a simple user, what I first want to know is does the tool allow me to work across the multiple Elixir projects in my monorepo: in a simple checklist sense this to me sounds like a “yes” for ElixirLS (I’ve not tried the others). Now to be fair to your point, there may be reasons why the ElixirLS implementation of that kind of support is inferior that of NextLS. But depending on the nature of my project I may never reach a point where that distinction actually matters in practice.
Finally, if we are to take the disclaimers at the top of the list at face value:
It seems as though the implementation difference you describe shouldn’t be a factor in deciding if a feature is supported or not. If there are actual feature differences, meaning I as a user gain or lose capabilities in working with the monorepo, the argument will be on firmer footing.
georgeguimaraes
(update: just saw that you don’t use neovim, sorry)
If you’re using nvim-lspconfig, I’ve updated the default config used for elixir-ls. nvim-lspconfig will now give higher preference to detecting your .git folder in your monorepo.
This should mean no more .elixir-ls folder in every project, just the one for your monorepo (if it has a .git folder).
mhanberg
The monorepo support is whether the tool itself can understand a monorepo, vs if it can be naively used in a monorepo.
For example, Next LS supports Workspace Folders (monorepo), so if you do a Workspace Symbols query (Quickstart | elixir-tools & Code Navigation) it will search for symbols across your entire workspace (all workspace folders), rather than just the one you are in.