Hey everybody,

after finishing the Elm-tree-sitter implementation in April

I set off to build a language server integration for the elm community based on that.

At the moment, there are instructions for:

VSCode

VIM

Kakoune

Emacs

More are hopefully coming, as soon as people think it’s useful.

So what can it do? (I’m using VSCode for this example)

Those are just some of the features, here is a list of most things that are implemented:

Feature Description Diagnostics Provided via elm make , elm-test and elm-analyse Formatting Provided via elm-format and post-processed to only return a diff of changes. This way it should not be as intrusive as running elm-format normal codeLenses Currently only shows if a type alias, custom type or function is exposed from that module completions Show completions for the current file and snippets definitions Enables you to jump to the definition of a type alias, module, custom type or function documentSymbols Identifies all symbols in a document. folding Let’s you fold the code on certain elm constructs hover Shows type annotations and documentation for a type alias, module, custom type or function references Lists all references to a type alias, module, custom type or function rename Enables you to rename a type alias, module, custom type or function workspaceSymbols Identifies all symbols in the current workspace

So please see the project pages on github:

And feel free to test (it will need a lot of testing) and contribute in any way. That being code, issues or maybe graphics.

Or maybe join the #elm-language-server channel on the elm slack.

I had a lot of help by some lovely people like @hpate, @buinauskas, @andys8 and various others.

Let’s build on this and make it even better!