Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sile/erlls
Erlang language server
https://github.com/sile/erlls
erlang lsp-server rust vscode-extension
Last synced: about 2 months ago
JSON representation
Erlang language server
- Host: GitHub
- URL: https://github.com/sile/erlls
- Owner: sile
- License: apache-2.0
- Created: 2023-07-01T11:19:07.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-24T13:13:27.000Z (4 months ago)
- Last Synced: 2024-12-15T19:14:05.059Z (about 2 months ago)
- Topics: erlang, lsp-server, rust, vscode-extension
- Language: Rust
- Homepage:
- Size: 412 KB
- Stars: 22
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
ErlLS
=====[![erlls](https://img.shields.io/crates/v/erlls.svg)](https://crates.io/crates/erlls)
[![vscode version](https://img.shields.io/vscode-marketplace/v/sile.erlls.svg?label=vscode)](https://marketplace.visualstudio.com/items?itemName=sile.erlls)
[![Actions Status](https://github.com/sile/erlls/workflows/CI/badge.svg)](https://github.com/sile/erlls/actions)
![License](https://img.shields.io/crates/l/erlls)Erlang language server.
Supported LSP features
----------------------- [ ] [textDocument/definition](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_definition)
- [x] Module
- [x] Function
- [x] Type
- [x] Record
- [x] Macro
- [ ] Variable
- [x] Include file
- [x] [textDocument/formatting](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting)
- [x] Formatting documents by using [efmt](https://bithub.com/sile/efmt)
- [ ] [textDocument/completion](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_completion)
- [x] Fully qualified function name
- [x] Fully qualified type name
- [ ] Record name
- [ ] Record field name
- [ ] [textDocument/publishDiagnostics](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_publishDiagnostics) (when received `textDocument/{didOpen,didSave}`)
- [x] Parse errors by [efmt](https://github.com/sile/efmt)
- [ ] Lint checks
- [ ] [textDocument/rename](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_rename)
- [x] [textDocument/semanticTokens/full](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens)
- [x] [textDocument/semanticTokens/range](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens)
- [ ] [textDocument/documentHighlight](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_documentHighlight)
- [ ] VariableEditor integrations
-------------------ErlLS can be used with any [LSP](https://microsoft.github.io/language-server-protocol/) clients.
Here are a few examples.### Visual Studio Code / Visual Studio Code for the Web
Please install [erlls extension](https://marketplace.visualstudio.com/items?itemName=sile.erlls).
There is no need to install the `erlls` binary using the `$ cargo install` command as the extension already includes the WebAssembly build.
#### Settings (`settings.json`)
To include the Erlang/OTP applications in the search target, please specify the directory as follows:
```json
{
"erlls.erlLibs": "/usr/local/lib/erlang/lib/:_checkouts:_build/default/lib"
}
```NOTE:
- The actual path may vary depending on the environment.
- In VSCode Web, it's not possible to search applications located outside of the workspace.### Emacs ([lsp-mode](https://github.com/emacs-lsp/lsp-mode))
1. Install `erlls` command.
```console
$ cargo install erlls
```2. Add the following code to your `.emacs` file.
```emacs
(with-eval-after-load 'lsp-mode
(add-to-list 'lsp-language-id-configuration
'(erlang-mode . "erlang")))(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection "erlls")
:activation-fn (lsp-activate-on "erlang")
:priority -1
:server-id 'erlls))
```