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 - via
lsp-execute-code-action, modeline (recommended) or 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
- Project errors on modeline
- Debugger - dap-mode
- Breadcrumb on headerline
- Helm integration - helm-lsp
- Ivy integration - lsp-ivy
- Consult integration - consult-lsp
- Treemacs integration - lsp-treemacs
- Semantic tokens as defined by LSP 3.16 (compatible language servers include recent development builds of clangd and rust-analyzer)
- which-key integration for better discovery
- System Crafters channel Emacs IDE Videos
- skybert's emacsconf presentation (Java)
- thatwist's ScalaUA Conference presentation (Scala)
- 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
- emacs-tree-sitter - Faster, fine-grained code highlighting via tree-sitter.
- gccemacs - modified Emacs capable of compiling and running Emacs Lisp as native code.
Contributions are very much welcome!
Support the project#
emacs-lsp organization has more than 20,000 lines of code, to keep all of this working,
we need to implement new features and help the community on a lot of issues.
You can help us keep going and improving it by supporting the project
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 | Clojure
C++ | Swift
completions | pwsh
lsp-mode core | iedit