victorolinasc

victorolinasc

Here I come again about the Language Server Protocol :slight_smile:

I’ve seen support for some core language features in editors lag a bit behind the releases of the language. It seems a given that most recent languages are putting some effort on the language server protocol as a means to unite the “experience” of editing source code in any editor.

Rust, JavaScript, Java just to name a few… Even Erlang has a language server in development in its core Github organization (sourcer). There is a huge list now on langserver.org.

The advantages, in my opinion, are these:

  • If you like Atom, VS Code, Emacs, Vim, IntelliJ and etc… it is easier to plug the language server with the editor frontend than to create your own language analyser, which will probably lag behind new features. Alchemist-server and elixir-sense are awesome projects (which I am really grateful) but they usually lag behind in support because they are not core.
  • You would probably get support for more editors that are not “officially supported”.
  • New language features would “automatically” be supported in the editors (like formatting, new core syntax like, say, “with” and so on).

The obvious disadvantage is that it would make the core team responsible for another piece of source code.

Even though, if we had good core Erlang and Elixir language servers, the experience in any editor that supports it would be awesome.

Anyway, it is just something that is on my mind for a while and I hope on the minds of more people.

Showing Posts 1 to 10

gon782

gon782

https://github.com/JakeBecker/elixir-ls

ElixirLS works well and it’s up to other editors to simply support the language server protocol if they want to tag along. I don’t know that we need it to be part of the core team and I think unless the person/people working on it gets paid specifically for that it doesn’t necessarily make a difference.

dsissitka

dsissitka

ElixirLS is still a little rough around the edges. For example, completion is broken in vim:

https://github.com/JakeBecker/elixir-ls/issues/40

gon782

gon782

It seems vim-lsp is misusing the protocol in that case according to the issue. ElixirLS working fine with VS Code (which uses the protocol correctly, presumably) would indicate that’s true.

dsissitka

dsissitka

Perhaps, but that wouldn’t explain why it doesn’t work with LanguageClient-neovim. :slight_smile:

cs-victor-nascimento

cs-victor-nascimento

Elixir-ls is a really awesome project. The thing is it will never get support on time of release new versions.

I still think that making it a core project would allow the project to evolve along with the language itself. Right now, Elixir-ls is awesome but not perfect and it is based on elixir-sense which is a project of analyzing the core AST. This kind of task feels to me like part of the core language.

Anyway, I think all the work we have here already is really nice. Just hoping for it to become even better.

michalmuskala

michalmuskala

There’s a saying that things go to stdlib to die - it’s very hard to develop or change libraries when they are in standard library, because of the slower release rate. Elixir-ls is still very well into development phase, changes often and implements new features all the time. Even because of this, it’s not a good candidate to include in core. Maybe once it stabilises, this should be revisited, but I’m convinced now it’s not a good time for this.

mbuhot

mbuhot

In the transition from 1.5 → 1.6 was there anything unsupported by ElixirLS? I recall ElixirLS prompting me to update to 1.6 before it was officially released to get formatter support.

gon782

gon782

Indeed that was the case.

edmz

edmz

I agree with you, but I got the impression that @victorolinasc suggested that a LSP server was adopted as a core project, not merged into stdlib. Like how GenStage/Flow are (IIRC).

JakeBecker

JakeBecker

Hi all,

First, thanks for the support on ElixirLS, feels good to see people use and appreciate it :slight_smile: I agree with @michalmuskala that it doesn’t belong as part of Elixir core for the time being. Unless that means someone (not me) is going to start working on it full time, it would probably end up slowing the release cycle without much benefit. Also, it seems to me to be a little too broad to be a “core” library, since it pulls in dependencies like JSON and Elixir Sense which would then need to be core projects too, I think.

The core Elixir team have been supportive of the project, in particular helping me add diagnostic returns to the Mix compilers in Elixir 1.6. So if it really does need support from the core team in the future we can continue to make that happen :slight_smile:

— All posts loaded —

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 94592 917
New
cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
heathen
Quite interesting article Google brought me. Didn’t find any mentions about it here. What do you think in general? Would you use togethe...
New
maennchen
:warning: Security advisory: Decimal DoS vulnerability A vulnerability has been published for decimal where very large exponents can cau...
New
marciol
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New
durvia
Anyone running long-lived stateful processes on BEAM? We’re building an AI agent runtime and would love to compare notes. We’re a small ...
New

Other Trending Topics Top

marciok
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
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
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
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews