Language Server Protocol Support for Emacs#
- Community Driven
- Fully featured - supports all features in Language Server Protocol v3.14.
- Fast - see performance section.
- Flexible - choose between full-blown IDE with flashy UI or minimal distraction free.
- Easy to configure - works out of the box and automatically upgrades if additional packages are present.
- Non-blocking asynchronous calls
- Real-time Diagnostics/linting via
flycheck (recommended) or
flymakewhen Emacs > 26 (requires flymake>=1.0.5)
- Code completion -
completion-at-point(note that company-lsp is no longer supported).
- Hovers - using lsp-ui
- Code actions - using
lsp-execute-code-actionor lsp-ui sideline.
- Code outline - using builtin
- Code navigation - using builtin xref, lsp-treemacs tree views or lsp-ui peek functions.
- Code lens
- Symbol highlights
- Debugger - dap-mode
- Helm integration - helm-lsp
- Ivy integration - lsp-ivy
- Treemacs integration - lsp-treemacs
- Semantic highlighting (using either the theia semantic highlighting protocol as implemented by JDT LS and some versions of clangd, or the semantic tokens protocol defined by LSP 3.16)
- which-key integration for better discovery
- lsp-docker - provide docker image with preconfigured language servers with corresponding emacs configuration.
- company-box -
companyfrontend with icons.
- dap-mode - Debugger
- eglot - An alternative minimal LSP implementation.
- which-key - Emacs package that displays available keybindings in popup
- projectile - Project Interaction Library for Emacs
Contributions are very much welcome.
Here it is a list of the current
lsp-mode members and what they are
primary working on/responsible for.
Scala | Rust
Go | Python MS
lsp-mode core | C++
lsp-mode core | Java
Dart | Flutter | docs
C++ | Swift
Last update: June 4, 2020