elixir-lsp / elixir-ls
git clone https://github.com/elixir-lsp/elixir-ls.git
v0.31.1 · 4mo ago
🔥 on GitHub Trending today
A frontend-independent IDE "smartness" server for Elixir. Implements the "Language Server Protocol" standard and provides debugger support via the "Debug Adapter Protocol"
+0
stars, 24h · #616
+1
stars, 7 days · #1,639
+3
stars, 30 days · #10,057
1.8k
★ total · +0% this week
229
forks · 52 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageElixir
LicenseApache-2.0
Created2018-03-25 (8y ago)
Last push1d ago
Watchers30
OwnerOrganization
Seen on GitHub Trending
- 2026-10-20 — #7 daily in elixir
- 2026-10-20 — #6 monthly in elixir · +3 ★
- 2026-10-20 — #8 weekly in elixir · +1 ★
GitHub topics
Links
- GitHub: github.com/elixir-lsp/elixir-ls
- Homepage: https://elixir-lsp.github.io/elixir-ls/
- Releases · Issues · Hacker News mentions
README excerpt
# ElixirLS - Elixir Language Server and Debug Adapter ElixirLS provides two components: a language server driving code intelligence and a debug adapter that allows step-through debugging of Elixir projects. The language server adheres to the Language Server Protocol, and the debug adapter implements the Debug Adapter Protocol. ## This is the main elixir-ls repo This repo is a community-maintained fork. The original repository JakeBecker/elixir-ls has now been deprecated in favor of this one. ## Features - Debugger support - Automatic, incremental Dialyzer analysis - Automatic inline suggestion of @specs based on Dialyzer's inferred success typings - Inline reporting of build warnings and errors - Documentation lookup on hover - Go-to-definition - Code completion - Code formatter - Find references to functions and modules (Thanks to @mattbaker) - Quick symbol lookup in file (Thanks to @mattbaker) - Quick symbol lookup in workspace and stdlib (both Elixir and erlang) (@lukaszsamson) Note: On its first run, Dialyzer will build a PLT cache. This will take a considerable amount of CPU time (usually 10+ minutes). After that is complete, the CPU usage will go back to normal. Alternatively, instead of waiting you can disable Dialyzer in the settings. ## IDE plugins | IDE | Plugin | Support | | ------------ | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | BBEdit | bbpackage | | | Emacs | eglot | | | Emacs | lsp-mode | Supports debug adapter via dap-mode | | Kakoune | kak-lsp | Limitations | | Kate | built-in LSP Client plugin | Does not support debug adapter | | Neovim | coc.nvim | Does not support debug adapter | | Neovim | nvim-dap | Supports debug adapter only | | Neovim | nvim-lspconfig | Does not support debug adapter | | Nova | nova-elixir-ls | | | Sublime Text | LSP-elixir | Does not support debug adapter | | Vim/Neovim | ALE | Does not support debug adapter or @spec suggestions | | Vim/Neovim | elixir-lsp/coc-elixir | Does not support debug adapter | | Vim/Neovim | vim-lsp | Does not support debug adapter | | VS Code | elixir-lsp/vscode-elixir-ls | Supports all ElixirLS features | | Helix | elixir-lsp | Supports all ElixirLS features | | Zed | elixir language support | Supports all ElixirLS features | Please feel free to create and publish your own client packages and add them to this list! ## Detailed Installation Instructions The installation process for ElixirLS depends on your editor. VSCode Please install the extension via the following link: https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls Emacs Installation Instructions Download the latest release and unzip it into a directory. (This is the directory referred to as the `"path-to-elixir-ls/release"`, below.) If you will be using `lsp-mode`, add this configuration: [code] For `eglot`, use: [code] If you access any projects via sym