title | description |
---|---|
LSP Mode - Language Server Protocol support for Emacs |
Language Server Protocol support with multiples languages support for Emacs |
homepage • installation • languages • settings • extensions • troubleshooting • screenshots • FAQ
- ❤️ 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
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
flymake
when 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
or
helm-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
- Treemacs integration - lsp-treemacs
- Semantic highlighting 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 -
company
frontend with icons. - dap-mode - Debugger
integration for
lsp-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 are very much welcome.
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
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 | docs |
![]() danielmartin C++ | Swift |
![]() kiennq completions | pwsh |