Designed at WhatsApp and inspired by the success of the Rust Analyzer project, ELP provides a scalable, fully incremental, IDE-first library for the semantic analysis of Erlang code.
ELP includes a fully fledged LSP language server for the Erlang programming language, providing advanced features such as go-to-definition, find references, call hierarchy and more for your IDE of choice.
ELP is easily extensible and provides a convenient API to implement linters and refactoring tools for Erlang.
ELP also includes eqWAlizer, a type-checker for Erlang. eqWAlizer brings static type-checking to Erlang code, helping you catch type errors before they reach production. See the eqWAlizer README for details.
You are free to copy, modify, and distribute ELP with attribution under the terms of the Apache-2.0 and MIT licences. See LICENCE-APACHE and LICENCE-MIT for details.
Please refer to the official documentation to get started on your favourite text editor and to learn how to configure your projects to use ELP.
- CONTRIBUTING.md: Provides an overview of how to contribute changes to ELP (e.g., diffs, testing, etc)
Please refer to the FAQ document for answers to some common questions, including:
- What's the difference between ELP and Erlang LS?
- Why not extend Erlang LS, rather than creating a new tool?
- Why is ELP implemented in Rust, rather than Erlang?
erlang-language-platform is dual-licensed