mishazharov/lsp-mode
Emacs client/library for the Language Server Protocol
title: LSP Mode - Language Server Protocol support for Emacs
description: Language Server Protocol support with multiples languages support for Emacs
root_file: README.md
Language Server Protocol Support for Emacs
homepage • installation • languages • settings • tutorials • troubleshooting • screenshots • FAQ
Why?
- ❤️ 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.
Overview
Client for Language Server
Protocol
(v3.14). lsp-mode aims to
provide IDE-like experience by providing optional integration with the
most popular Emacs packages like company, flycheck and projectile.
- Non-blocking asynchronous calls
- Real-time Diagnostics/linting via
flycheck (recommended) or
flymakewhen Emacs > 26 (requires flymake>=1.0.5) - Code completion -
company-capf/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
imenu
orhelm-imenu - Code navigation - using builtin
xref,
lsp-treemacs tree views
or lsp-ui peek functions. - Code lens
- Symbol highlights
- Formatting
- 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 - iedit
- dired
- ido
Presentations/demos
- System Crafters channel
Emacs IDE Videos - skybert's emacsconf
presentation (Java) - thatwist's ScalaUA Conference
presentation
(Scala)
See also
- lsp-docker - provide
docker image with preconfigured language servers with corresponding
emacs configuration. - company-box -
companyfrontend with icons. - dap-mode - Debugger
integration forlsp-mode. - 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
Contributions are very much welcome!
NOTE
Documentation for clients is generated from doc comments in the clients
themselves (see
lsp-doc.el)
and some metadata (see
lsp-clients.json)
so please submit corrections accordingly.
Support the project
The 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
Members
Here it is a list of the current lsp-mode members and what they are
primary working on/responsible for.
totbwf F# |
brotzeit Rust |
dsyzling Scala |
kurnevsky Scala | Rust |
seagle0128 Go | Python MS |
sebastiansturm lsp-mode core | C++ |
vibhavp lsp-mode core |
yyoncho lsp-mode core | Java |
ericdallo Dart/Flutter | Clojure |
danielmartin C++ | Swift |
kiennq completions | pwsh |
nbfalcon lsp-mode core | iedit |
psibi Terraform | Nix |
razzmatazz C# | F# |


