Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/erlang-ls/erlang_ls

The Erlang Language Server
https://github.com/erlang-ls/erlang_ls

erlang erlang-ls ide language-server language-server-protocol lsp

Last synced: 28 days ago
JSON representation

The Erlang Language Server

Awesome Lists containing this project

README

        

# erlang_ls

![erlang_ls](images/erlang-ls-logo-small.png?raw=true "Erlang LS")

![Build](https://github.com/erlang-ls/erlang_ls/workflows/Build/badge.svg)
[![Coverage Status](https://coveralls.io/repos/github/erlang-ls/erlang_ls/badge.svg?branch=main)](https://coveralls.io/github/erlang-ls/erlang_ls?branch=main)

An Erlang server implementing Microsoft's Language Server Protocol 3.17.

[Documentation](https://erlang-ls.github.io/)

## Minimum Requirements

* [Erlang OTP 24+](https://github.com/erlang/otp)
* [rebar3 3.9.1+](https://github.com/erlang/rebar3)

## Supported OTP versions

* 24, 25, 26, 27

## Quickstart

Compile the project:

make

To install the produced `erlang_ls` escript in `/usr/local/bin`:

make install

To install to a different directory set the `PREFIX` environment variable:

PREFIX=/path/to/directory make install

## Command-line Arguments

These are the command-line arguments that can be provided to the
`erlang_ls` escript:

``` shell
Usage: Erlang LS [-v] [-t []] [-p []] [-d []]
[-l []]

-v, --version Print the current version of Erlang LS
-t, --transport Specifies the transport the server will use for the
connection with the client, either "tcp" or "stdio".
[default: tcp]
-p, --port Used when the transport is tcp. [default: 10000]
-d, --log-dir Directory where logs will be written.
[default: filename:basedir(user_log, "erlang_ls")]
-l, --log-level The log level that should be used. [default: info]
```

## Configuration

It is possible to customize the behaviour of the `erlang_ls` server
via a configuration file, named `erlang_ls.config` or `erlang_ls.yaml`.
That file should be placed in the root directory of a
given project to store the configuration for that project. It is also
possible to store a system-wide default configuration, which is shared
across multiple projects.

Please refer to the
[configuration](https://erlang-ls.github.io/configuration) section of
the documentation to learn how to configure Erlang LS for a specific
project.

## Getting in Touch

If you have any questions about the project, feel free to open a new
issue. You can also join the `#erlang-ls` channel in the
_Erlanger_ Slack if you would like to get involved or if you prefer a
more informal mean of communication.

All contributions are welcome, be them in the form of a bug report, a
question, feedback, or code.

I occasionally blog about the project on
[Medium](https://medium.com/about-erlang).

## References

https://microsoft.github.io/language-server-protocol/

## License

The `erlang_ls` project is licensed under the Apache License 2.0. Please refer
to the `LICENSE` file for details.