Eglot is an LSP client built into Emacs that connects editing buffers to language servers with minimal configuration.
emacs-lsp/lsp-mode
Emacs client for the Language Server Protocol, adding IDE-style completion, diagnostics, navigation and refactoring to Emacs.
- Stars
- 5,134
- Forks
- 984
- Open issues
- 508
- Last commit
- 18 days ago
What is it?
lsp-mode is a client library that connects Emacs to language servers implementing the Language Server Protocol (v3.14). It brings IDE-like features such as code completion, real-time diagnostics, hovers, code actions, formatting, code lenses and symbol highlighting into Emacs buffers, with asynchronous, non-blocking requests.
The package integrates with common Emacs tools: flycheck or flymake for diagnostics, company-capf or completion-at-point for completion, xref and imenu for navigation and outlines, and optional add-ons like lsp-ui, lsp-treemacs and dap-mode for hovers, project trees and debugging. It works out of the box and adds features automatically when related packages are installed.
Supported languages include C++, Go, Rust, Python, TypeScript/JavaScript, Java, Scala, Ruby, PHP, Dart and Swift, among others, through their respective language servers.
Key features
- 01Implements Language Server Protocol v3.14 with asynchronous requests.
- 02Provides completion, diagnostics, hovers, code actions and formatting.
- 03Offers code navigation via xref, imenu and treemacs views.
- 04Integrates with flycheck, flymake, company and completion-at-point.
- 05Supports semantic tokens for servers such as clangd and rust-analyzer.
- 06Connects to debuggers through the companion dap-mode package.
Use cases
- Turning Emacs into a full IDE for Rust, Go or C++ projects.
- Adding language-aware completion and diagnostics to Python or TypeScript editing.
- Navigating large multi-language codebases with xref and treemacs views.
- Debugging applications from inside Emacs via dap-mode.
Quick start
- 1
Install lsp-mode from MELPA by following the installation guide
Things to know
- Licensed under GPL-3.0, a copyleft license that requires derivative works to be distributed under the same terms.
Topics
FAQ
- What is lsp-mode?
- Emacs client for the Language Server Protocol, adding IDE-style completion, diagnostics, navigation and refactoring to Emacs. lsp-mode is a client library that connects Emacs to language servers implementing the Language Server Protocol (v3.14). It brings IDE-like features such as code completion, real-time diagnostics, hovers, code actions, formatting, code lenses and symbol highlighting into Emacs buffers, with asynchronous, non-blocking requests.
- Is lsp-mode free to use? What license does it have?
- lsp-mode is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
- Is lsp-mode still maintained?
- Actively maintained. The last commit to lsp-mode was on Oct 20, 2026.
- What can I use lsp-mode for?
- Turning Emacs into a full IDE for Rust, Go or C++ projects. Adding language-aware completion and diagnostics to Python or TypeScript editing. Navigating large multi-language codebases with xref and treemacs views. Debugging applications from inside Emacs via dap-mode.
- How do I install lsp-mode?
- Install lsp-mode from MELPA by following the installation guide
- Where can I get lsp-mode?
- The source code and installation instructions are on GitHub: https://github.com/emacs-lsp/lsp-mode
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Python LSP client library for building applications that query language servers for definitions, references, hover info and completions.
A fast Python type checker and language server, written in Rust, with IDE features like navigation, completion and semantic highlighting.
A collection of ready-made Language Server Protocol configurations for connecting Neovim to many programming language servers.
A modular in-buffer completion framework for GNU Emacs that shows code and text completion candidates while you type.
An open-source framework in TypeScript for building browser-based and desktop IDEs and developer tools.