Introducing Next LS and an elixir-tools update
Since the last we've talked 78 days ago, a lot has happened. Let's recap!
Credo Language Server
Credo Language Server has received a lot of love by users and contributors alike!
- 2,474 downloads
- 11 releases
- 6 contributors (alphabetical order)
- Emacs integration through lsp-mode by Wilhelm Kirschbaum
- Emacs manual setup through eglot by Wilhelm Kirschbaum
- Helix manual setup instructions
- New isolated architecture that can support more Credo versions and custom and 3rd party checks
elixir-tools.nvim
The oldest elixir-tools project, elixir-tools.nvim is not slowing down!
- ~6,000 clones (guess based on GitHub traffic metrics)
- 10 releases
- 7 contributors (alphabetical order)
- Major enhancements to our Projectionist support, work started by Matt Furden
- Major enhancements to the test suite
elixir-tools.vscode
The baby of the group, elixir-tools.vscode got some love, but still has a long way to grow up!
- 451 installs
- 9 releases
- 1 contributor (alphabetical order)
- Very grateful for Dennis' work, he setup the entire CI test suite. (the only thing missing are tests! 😆)
Emacs
As mentioned above, Wilhelm Kirschbaum has done a tremendous job getting Credo Language Server and Next LS working with Emacs, even contributing an upstream bug fix to core emacs!
There are two primary ways to integrate language servers with Emacs, lsp-mode and eglot.
The former is used by distributions like Spacemacs and Doom Emacs and is a user land plugin and the latter lives inside the bleeding edge releases of core Emacs.
Having elixir-tools working with Emacs is no small feat and I am so incredibly grateful for his work, thank you Wilhelm!
Sublime Text
There hasn't been any public work yet, but a community member has reached out to me about them creating an elixir-tools.sublime plugin for Sublime Text.
The community outreach (inreach?) with the elixir-tools project has far exceeded my expectations, thank you everyone!
Tableau
Tableau hasn't been properly introduced yet, so now is the time!
Tableau is a static site generator for Elixir that focuses on simplicity. You can use it with whatever template syntax you want (this website is written with Temple) and you can write whatever kind of extensions you'd like.
Tableau has existed for a while, but really got an overhaul when it came time to build https://www.elixir-tools.dev.
The next steps are to upstream the Post and RSS extensions that currently live in the repository for this website, as well as create an SEO extension. Then I can rewrite my personal website with it!
elixir-tools.dev
This website!
elixir-tools.dev will be the home for elixir-tools news and documentation.
Built with Tableau, Temple, and hosted on Netlify.
Discord
The elixir-tools Discord server now has 64 members, and has become a friendly place for folks to chat about Elixir developer tooling.
Nothing special here, for completeness, there is now an elixir-tools Twitter account.
Introducing Next LS
Next LS is the culmination of over a year of programming, conference talks, blog posts, and community building.
Next LS is the language server for Elixir that just works.
Current Features
With the release of v0.5 (the 15th release!), Next LS supports the following features (with many more on the way!):
- Compiler Diagnostics (docs)
- Code Formatting (docs)
- Workspace Symbols (docs)
- Document Symbols (docs)
- Go To Definition (docs)
Editor Integrations
Next LS is currently supported by the following editors:
- Neovim (via elixir-tools.nvim)
- Visual Studio Code (via elixir-tools.vscode)
- Vim (manually via plugins like CoC and ALE)
- Emacs (manually via eglot)
Ready for early adopters
The purpose of this announcement is to declare that Next LS is ready for early adopters!
Next LS hasn't reached feature parity with Elixir LS, so I don't expect the majority of Elixir developers to switch just yet. But I believe it has developed enough for those who like to live on the bleeding edge and aren't satisfied with their current experience.
There will be bugs, and the more people that are using it for their daily work, the faster the kinks will iron out and bring more momentum to the project.
If you have ideas for features or want to contribute, feel absolutely free to check out the GitHub repository!
How to get started
If you would like to try out Next LS, please check out one of the 1st party elixir-tools editor plugins (elixir-tools.nvim and elixir-tools.vscode) or read the manual setup instructions.
With the 1st party integrations, you won't need to install Next LS separately, but when manually setting it up, you will need to download the script that is included in the GitHub release page.
What is next for Next LS
I will be tackling the following next:
- Hardening the internal symbol table (will improve Workspace Symbols and Go To Definition)
- Find References (basically the inverse of Go To Definition)
- Credo Extension (will pave the way for the Dialyzer, Ecto, Phoenix extensions)
- effectively deprecates Credo Language Server for those who use Next LS
If you have a feature that you'd like to see sooner, let me know!
Thank you
I'd like to give a huge shout out to all of the contributors, bug reporters, and to all (22!) of my GitHub sponsors! Without the support of all of you, none of this would be possible.
How to get involved
If you'd like to get involved with elixir-tools, there are several ways:
- Contribute to the project via code on GitHub
- Contribute to the community via Discord or GitHub
- Contribute financially via GitHub Sponsors
I'll see you next month with another update!