/lsp-mode

Emacs client/library for the Language Server Protocol

Primary LanguageEmacs LispGNU General Public License v3.0GPL-3.0

title description
LSP Mode - Language Server Protocol support for Emacs
Language Server Protocol support with multiples languages support for Emacs

Language Server Protocol Support for Emacs

LSP mode


homepage | installation | languages | settings | extensions | 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 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 - using lsp-execute-code-action 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
  • 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

Presentations/demos

See also

  • 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

Contributions

Contributions are very much welcome.

Members

Here it is a list of the current lsp-mode members and what they are primary working on/responsible for.

kurnevsky
kurnevsky

Scala | Rust
seagle0128
seagle0128

Go | Python MS
sebastiansturm
sebastiansturm

lsp-mode core | C++
vibhavp
vibhavp

lsp-mode core
yyoncho
yyoncho

lsp-mode core | Java
ericdallo
ericdallo

Dart | Flutter | docs
danielmartin
danielmartin

C++ | Swift