# emacs-lsp/lsp-mode

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/emacs-lsp-lsp-mode).**

5,060 stars · 962 forks · Emacs Lisp · gpl-3.0

## Links

- GitHub: https://github.com/emacs-lsp/lsp-mode
- Homepage: https://emacs-lsp.github.io/lsp-mode
- awesome-repositories: https://awesome-repositories.com/repository/emacs-lsp-lsp-mode.md

## Topics

`angular` `cpp` `dart` `emacs` `eslint` `golang` `html` `java` `javascript` `json` `language-server-client` `language-server-protocol` `php` `python` `ruby` `rust` `scala` `swift` `typescript`

## Description

lsp-mode is a Language Server Protocol client and IDE feature set for Emacs. It functions as a semantic code analysis tool and JSON-RPC communication layer that connects the editor to external language servers to provide intelligent code completion and real-time diagnostics.

The project also serves as a Debug Adapter Protocol client, enabling interactive debugging sessions and breakpoint management. This allows for stepping through code and inspecting variables via a standardized protocol, including support for debugging within Docker containers.

The system covers a broad range of development capabilities, including project-wide code navigation, automated refactoring, and real-time linting. It provides visual aids such as breadcrumbs, symbol trees, and semantic highlighting, while offering automated code formatting and the ability to install and verify language server binaries.

## Tags

### Development Tools & Productivity

- [Language Server Integrations](https://awesome-repositories.com/f/development-tools-productivity/language-server-integrations.md) — Implements the Language Server Protocol to connect Emacs to external servers for real-time code intelligence.
- [Code Action Providers](https://awesome-repositories.com/f/development-tools-productivity/code-action-providers.md) — Offers context-sensitive code corrections and automated refactoring suggestions for specific lines of code. ([source](https://emacs-lsp.github.io/lsp-mode))
- [Code Completion](https://awesome-repositories.com/f/development-tools-productivity/code-completion.md) — Suggests completions for symbols and identifiers as the user types by integrating with a completion frontend. ([source](https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/))
- [Code Navigators](https://awesome-repositories.com/f/development-tools-productivity/code-navigators.md) — Enables jumping between definitions and references while visualizing symbol hierarchies across the project.
- [Automated Code Refactoring](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/code-analysis-and-transformation/automated-code-refactoring.md) — Executes automated structural changes to code based on server-provided refactoring suggestions. ([source](https://cdn.jsdelivr.net/gh/emacs-lsp/lsp-mode@master/README.md))
- [Debugger Protocol Integrations](https://awesome-repositories.com/f/development-tools-productivity/debugger-protocol-integrations.md) — Implements a client for the Debug Adapter Protocol to decouple the editor from specific debugger implementations.
- [Debugging Protocols](https://awesome-repositories.com/f/development-tools-productivity/debugging-protocols.md) — Implements a standardized communication protocol to decouple the editor interface from specific debugger engines.
- [Definition Navigation](https://awesome-repositories.com/f/development-tools-productivity/definition-navigation.md) — Enables jumping directly from a symbol usage to its definition within the project. ([source](https://emacs-lsp.github.io/lsp-mode/page/main-features/))
- [Language Server Protocol Clients](https://awesome-repositories.com/f/development-tools-productivity/emacs-extensions/language-server-protocol-clients.md) — Integrates language servers into Emacs for completion, navigation, and diagnostics via LSP.
- [Code Inspection Clients](https://awesome-repositories.com/f/development-tools-productivity/language-servers/code-inspection-clients.md) — Queries language servers to retrieve symbols, definitions, and diagnostics for real-time code inspection. ([source](https://cdn.jsdelivr.net/gh/emacs-lsp/lsp-mode@master/README.md))
- [Real-Time Code Diagnostics](https://awesome-repositories.com/f/development-tools-productivity/real-time-code-diagnostics.md) — Scans source code continuously to identify syntax errors and linting warnings in real time. ([source](https://cdn.jsdelivr.net/gh/emacs-lsp/lsp-mode@master/README.md))
- [Symbol Navigation](https://awesome-repositories.com/f/development-tools-productivity/symbol-navigation.md) — Provides comprehensive symbol navigation, including jumps to definitions and references across the project. ([source](https://cdn.jsdelivr.net/gh/emacs-lsp/lsp-mode@master/README.md))
- [Automated Code Fixes](https://awesome-repositories.com/f/development-tools-productivity/ast-transformation-tools/ast-structure-modification/automated-code-fixes.md) — Executes automated corrections for identified errors and warnings through server-provided code actions. ([source](https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/))
- [Inline Completions](https://awesome-repositories.com/f/development-tools-productivity/code-completion/inline-completions.md) — Displays completion suggestions directly in the text stream while the user is idle. ([source](https://emacs-lsp.github.io/lsp-mode/page/settings/mode/))
- [Inline Symbol Overlays](https://awesome-repositories.com/f/development-tools-productivity/code-diagnostic-panels/inline-symbol-overlays.md) — Shows diagnostics, hover messages, and available code actions directly on the current line. ([source](https://emacs-lsp.github.io/lsp-ui))
- [Code Formatting Tools](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/code-formatting-tools.md) — Automatically applies consistent styling and formatting rules to source code during the save process.
- [Code Visualizers](https://awesome-repositories.com/f/development-tools-productivity/code-visualizers.md) — Visualizes the relationship between types and symbols through graphical representations of code hierarchy. ([source](https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/))
- [Debug Configuration Templates](https://awesome-repositories.com/f/development-tools-productivity/debug-configurations/debug-configuration-templates.md) — Uses predefined launch schemas to map local host paths to remote or containerized environments for debugging.
- [Editor-Integrated Debugging](https://awesome-repositories.com/f/development-tools-productivity/debugging-profiling-testing/debugging-diagnostics/debugging-inspection-tools/editor-integrated-debugging.md) — Integrates debugging tools directly into the editor to manage breakpoints and inspect errors. ([source](https://emacs-lsp.github.io/lsp-mode/page/main-features/))
- [Inlay Hint Renderers](https://awesome-repositories.com/f/development-tools-productivity/developer-utilities-libraries/workflow-productivity-enhancers/developer-productivity-utilities/developer-experience/type-hint-integrations/inlay-hint-renderers.md) — Displays inline virtual text for parameter names and inferred types to provide immediate code context. ([source](https://emacs-lsp.github.io/lsp-mode/page/settings/mode/))
- [Emacs Extensions](https://awesome-repositories.com/f/development-tools-productivity/emacs-extensions.md) — Provides a comprehensive set of editor enhancements for Emacs, including breadcrumbs and symbol trees.
- [Automatic Signature Help Displays](https://awesome-repositories.com/f/development-tools-productivity/function-signature-overlays/automatic-signature-help-displays.md) — Automatically displays function parameter hints and signatures as the user types a function call. ([source](https://emacs-lsp.github.io/lsp-mode/page/settings/mode/))
- [IDE Extension Features](https://awesome-repositories.com/f/development-tools-productivity/ide-extension-features.md) — Provides professional development capabilities like semantic navigation and automated refactoring through IDE extension features. ([source](https://emacs-lsp.github.io/lsp-mode/page/settings/mode/))
- [Breakpoint Debugging](https://awesome-repositories.com/f/development-tools-productivity/interactive-debug-consoles/breakpoint-debugging.md) — Allows halting execution at breakpoints, inspecting variable state, and stepping through code via a debug adapter. ([source](https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/))
- [Structural Code Navigation](https://awesome-repositories.com/f/development-tools-productivity/structural-code-navigation.md) — Generates code outlines and structural navigation to help users understand the hierarchy of the current file. ([source](https://cdn.jsdelivr.net/gh/emacs-lsp/lsp-mode@master/README.md))
- [Hover Information Displays](https://awesome-repositories.com/f/development-tools-productivity/symbol-navigation/hover-information-displays.md) — Displays hover information, full documentation, and function signatures for the symbol at point. ([source](https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/))
- [Symbol Searchers](https://awesome-repositories.com/f/development-tools-productivity/workspace-management/project-workspaces/symbol-searchers.md) — Allows querying and locating specific identifiers across a single project or multiple workspaces. ([source](https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/))
- [Symbol Tree Navigators](https://awesome-repositories.com/f/development-tools-productivity/workspace-management/project-workspaces/symbol-searchers/symbol-tree-navigators.md) — Provides a navigable symbol tree to allow quick movement between structures within a buffer. ([source](https://emacs-lsp.github.io/lsp-ui))

### Networking & Communication

- [Editor LSP JSON-RPC Clients](https://awesome-repositories.com/f/networking-communication/json-rpc-implementations/editor-lsp-json-rpc-clients.md) — Provides the JSON-RPC communication layer necessary for asynchronous messaging between the editor and language servers.

### Part of an Awesome List

- [Semantic Code Analyzers](https://awesome-repositories.com/f/awesome-lists/devtools/code-analysis-and-linting/semantic-code-analyzers.md) — Facilitates semantic analysis of source code to resolve symbols, find references, and apply real-time linting.
- [Code Formatting](https://awesome-repositories.com/f/awesome-lists/devtools/code-formatting.md) — Organizes code layout based on configuration settings through automated formatting. ([source](https://cdn.jsdelivr.net/gh/emacs-lsp/lsp-mode@master/README.md))
- [On-Save Formatting](https://awesome-repositories.com/f/awesome-lists/devtools/code-formatting/on-save-formatting.md) — Automatically applies file formatting and fixes all auto-fixable issues upon saving the buffer. ([source](https://emacs-lsp.github.io/lsp-mode/page/settings/mode/))

### System Administration & Monitoring

- [DAP Protocol Clients](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/log-management-systems/debug-logging-management/debug-adapter-protocol-logging/dap-protocol-clients.md) — Functions as a DAP client to launch debug sessions, manage breakpoints, and step through code.

### Education & Learning Resources

- [LSP Error Explanations](https://awesome-repositories.com/f/education-learning-resources/error-diagnostics/lsp-error-explanations.md) — Shows detailed diagnostic information and corrective advice from the language server to resolve errors. ([source](https://emacs-lsp.github.io/lsp-mode/page/gallery))

### Operating Systems & Systems Programming

- [Remote Debugging Protocols](https://awesome-repositories.com/f/operating-systems-systems-programming/remote-debugging-protocols.md) — Uses standardized protocols to communicate with remote debug agents for process execution control and memory inspection. ([source](https://cdn.jsdelivr.net/gh/emacs-lsp/lsp-mode@master/README.md))

### Programming Languages & Runtimes

- [DAP Debug Sessions](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/systems-languages/c/debugging-tools/native-debugging-sessions/dap-debug-sessions.md) — Launches debug sessions and manages breakpoints using the Debug Adapter Protocol. ([source](https://emacs-lsp.github.io/dap-mode/))

### Software Engineering & Architecture

- [Peek Definitions](https://awesome-repositories.com/f/software-engineering-architecture/codebase-symbol-references/peek-definitions.md) — Allows users to peek at symbol definitions and references in a temporary window without leaving the current file. ([source](https://emacs-lsp.github.io/lsp-ui))
- [Documentation Hover Frames](https://awesome-repositories.com/f/software-engineering-architecture/job-result-persistence/child-result-aggregation/documentation-hover-frames.md) — Renders documentation and function signatures in independent child frames to avoid disrupting the main editor buffer.
- [Server Session Isolation](https://awesome-repositories.com/f/software-engineering-architecture/project-context-managers/server-session-isolation.md) — Maintains separate server instances and state for each open project to ensure isolated language contexts.
- [Symbol Renamers](https://awesome-repositories.com/f/software-engineering-architecture/symbol-renamers.md) — Enables safe renaming of symbols and functions across the entire codebase. ([source](https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/))

### User Interface & Experience

- [Semantic Color Mappings](https://awesome-repositories.com/f/user-interface-experience/color-themes/semantic-color-mappings.md) — Maps semantic tokens provided by the language server to specific editor colors for variables, functions, and types.
- [Semantic Highlighters](https://awesome-repositories.com/f/user-interface-experience/styling-theming-systems/content-styling/styling-markup/code-highlighting/semantic-highlighters.md) — Colors code elements based on semantic analysis of symbols and types provided by the language server. ([source](https://emacs-lsp.github.io/lsp-mode/page/gallery))
