title: LSP Mode - Language Server Protocol support for Emacs
description: Language Server Protocol support with multiples languages support for Emacs
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.
Client for Language Server
(v3.14). lsp-mode aims to
provide IDE-like experience by providing optional integration with the
most popular Emacs packages like
- Non-blocking asynchronous calls
- Real-time Diagnostics/linting via
flycheck (recommended) or
flymake when Emacs > 26 (requires flymake>=1.0.5)
- Code completion -
completion-at-point (note that
company-lsp is no
- 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
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 -
- Ivy integration - lsp-ivy
- Consult integration - consult-lsp
- Treemacs integration -
- Semantic tokens as defined by LSP 3.16 (compatible language servers include recent development builds of clangd and rust-analyzer)
for better discovery
lsp-docker - provide
docker image with preconfigured language servers with corresponding
company frontend 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.