Summary
Add Erlang support via tree-sitter + LSP enrichment, complementing existing Elixir support in the BEAM ecosystem.
Tooling
| Component |
Tool |
Notes |
| Tree-sitter grammar |
tree-sitter-erlang |
WhatsApp/Meta-maintained, high quality |
| LSP server |
erlang_ls |
Active, well-maintained |
| Alternative LSP |
ELP |
WhatsApp-backed, newer |
| SCIP indexer |
None |
N/A |
What to implement
Language notes
- Functions are identified by
Module:Function/Arity (e.g., lists:map/2)
- Pattern-matching clauses: one function name can have multiple clause bodies — use first clause's line as start, last clause's end
- Header files (
.hrl) contain macros and record definitions — should be indexed
- OTP behaviours (
gen_server, gen_statem, supervisor) define callback relationships
Context
Complements existing Elixir support. Erlang and Elixir share the BEAM VM and often co-exist in projects. Many Elixir projects call into Erlang libraries.