hakonrossebo / elm-language-server-requirements-specification

Repository and working document for the Elm language server requirements specification
MIT License
33 stars 0 forks source link

Language Server Protocol #3

Open hakonrossebo opened 7 years ago

hakonrossebo commented 7 years ago

The Language Server Protocol (introduced in this blog post) is used between a tool (the client) and the language server to integrate features used by the client. The protocol is based on JSON-RPC v2.0

Many editors support the Language Server Protocol. This protocol is a set of features/APIs that a language server can expose as part of it's features. An important issue to be resolved here is whether or not ElmLS should implement LSP.

rundis commented 7 years ago

Some IDE authors views on using language server/LSP for Rust here: https://www.reddit.com/r/rust/comments/6fs5q9/language_servers_and_ides/dinhtiz/

TLDR; LSP too limited ? Now of course I suppose our primary target wouldn't be IntelliJ, Eclipse or whatnot but still might give some hints on how modularising the implementation might make it/parts of it more useful.

hakonrossebo commented 7 years ago

This is a great find. I assume by modularising, we could still support LSP as one of the interfaces exposed from the language server?

bengolds commented 7 years ago

Good to see another language's direct experience with LSP's limitations. I added a comment in the specs doc about a proposal for working outside of the protocol's defined featureset. In short, the elmDocument/{newcommand approach should work for us. In the linked post, the author says that "LSP is inextensible", which is a bit of an exaggeration -- the technology has no specific limitation on what can go through the communication channel. What the author seems to be saying is that extensions are hard to standardize and share between various languages. That's a good point -- but I don't think that means we should ditch the gains we get from adhering to LSP for the parts it does support.

ringods commented 7 years ago

There is already another person who tried to kickstart this: https://github.com/Krzysztof-Cieslak/vscode-elm/issues/137

In my comment here, I already analyzed a bit of the existing tooling. Look at these pointers to see if it would be helpful kicking of things.

hakonrossebo commented 7 years ago

@ringods - Thanks for your contributions. I'm the same person starting that issue, working on VSCode-elm and feeling the pain points of re-inventing the wheel to parse some Elm code.

ShalokShalom commented 6 years ago

I am also very interested in this ^-^

andys8 commented 6 years ago

For reference: https://github.com/elm-tooling/elm-language-server