Introducing Next LS and an elixir-tools update

July 05, 2023

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!

elixir-tools.nvim

The oldest elixir-tools project, elixir-tools.nvim is not slowing down!

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.

Twitter

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:

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:


I'll see you next month with another update!