{"id":13471308,"url":"https://github.com/emacs-lsp/lsp-mode","last_synced_at":"2025-05-12T20:50:57.349Z","repository":{"id":37712954,"uuid":"75415169","full_name":"emacs-lsp/lsp-mode","owner":"emacs-lsp","description":"Emacs client/library for the Language Server Protocol","archived":false,"fork":false,"pushed_at":"2025-05-07T19:39:53.000Z","size":191238,"stargazers_count":4925,"open_issues_count":451,"forks_count":910,"subscribers_count":88,"default_branch":"master","last_synced_at":"2025-05-11T11:34:30.460Z","etag":null,"topics":["angular","cpp","dart","emacs","eslint","golang","html","java","javascript","json","language-server-client","language-server-protocol","php","python","ruby","rust","scala","swift","typescript"],"latest_commit_sha":null,"homepage":"https://emacs-lsp.github.io/lsp-mode","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emacs-lsp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.org","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"emacs-lsp","patreon":null,"open_collective":"emacs-lsp","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2016-12-02T17:08:23.000Z","updated_at":"2025-05-09T03:21:49.000Z","dependencies_parsed_at":"2022-07-09T11:00:24.895Z","dependency_job_id":"97a1b160-d942-4070-a1b3-23bdbb058adc","html_url":"https://github.com/emacs-lsp/lsp-mode","commit_stats":{"total_commits":3691,"total_committers":664,"mean_commits":5.558734939759036,"dds":0.8163099431048496,"last_synced_commit":"9b104105adecf637188f4e3bf5cc228bda12374a"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-lsp%2Flsp-mode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-lsp%2Flsp-mode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-lsp%2Flsp-mode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-lsp%2Flsp-mode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emacs-lsp","download_url":"https://codeload.github.com/emacs-lsp/lsp-mode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253820866,"owners_count":21969593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","cpp","dart","emacs","eslint","golang","html","java","javascript","json","language-server-client","language-server-protocol","php","python","ruby","rust","scala","swift","typescript"],"created_at":"2024-07-31T16:00:42.876Z","updated_at":"2025-05-12T20:50:57.300Z","avatar_url":"https://github.com/emacs-lsp.png","language":"Emacs Lisp","funding_links":["https://github.com/sponsors/emacs-lsp","https://opencollective.com/emacs-lsp"],"categories":["Emacs Lisp","编辑器","angular"],"sub_categories":["网络服务_其他"],"readme":"---\ntitle: LSP Mode - Language Server Protocol support for Emacs\ndescription: Language Server Protocol support with multiples languages support for Emacs\nroot_file: README.md\n---\n\n[![](https://melpa.org/packages/lsp-mode-badge.svg)](https://melpa.org/#/lsp-mode)\n[![](https://stable.melpa.org/packages/lsp-mode-badge.svg)](https://stable.melpa.org/#/lsp-mode)\n[![](https://discordapp.com/api/guilds/789885435026604033/widget.png?style=shield)](https://discord.gg/swuxy5AAgT)\n[![CI](https://github.com/emacs-lsp/lsp-mode/actions/workflows/test.yml/badge.svg)](https://github.com/emacs-lsp/lsp-mode/actions/workflows/test.yml)\n\n\u003cimg src=\"examples/logo.png\" width=\"240\" align=\"right\"\u003e\n\nLanguage Server Protocol Support for Emacs\n=========================================\n\n![LSP mode](examples/head.png)\n\n\u003chr\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://emacs-lsp.github.io/lsp-mode\"\u003e\u003cstrong\u003ehomepage\u003c/strong\u003e\u003c/a\u003e •\n  \u003ca href=\"https://emacs-lsp.github.io/lsp-mode/page/installation\"\u003e\u003cstrong\u003einstallation\u003c/strong\u003e\u003c/a\u003e •\n  \u003ca href=\"https://emacs-lsp.github.io/lsp-mode/page/languages\"\u003e\u003cstrong\u003elanguages\u003c/strong\u003e\u003c/a\u003e •\n  \u003ca href=\"https://emacs-lsp.github.io/lsp-mode/page/settings/mode/\"\u003e\u003cstrong\u003esettings\u003c/strong\u003e\u003c/a\u003e •\n  \u003ca href=\"https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/\"\u003e\u003cstrong\u003etutorials\u003c/strong\u003e\u003c/a\u003e •\n  \u003ca href=\"https://emacs-lsp.github.io/lsp-mode/page/troubleshooting\"\u003e\u003cstrong\u003etroubleshooting\u003c/strong\u003e\u003c/a\u003e •\n  \u003ca href=\"https://emacs-lsp.github.io/lsp-mode/page/gallery\"\u003e\u003cstrong\u003escreenshots\u003c/strong\u003e\u003c/a\u003e •\n  \u003ca href=\"https://emacs-lsp.github.io/lsp-mode/page/faq\"\u003e\u003cstrong\u003eFAQ\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003chr\u003e\n\n## Why?\n\n  - :heart: **Community Driven**\n  - :gem: **Fully featured** - supports **all** features in Language Server Protocol v3.14.\n  - :rocket: **Fast** - see [performance section](https://emacs-lsp.github.io/lsp-mode/page/performance).\n  - :star2: **Flexible** - choose between full-blown IDE with flashy UI or minimal distraction free.\n  - :gear: **Easy to configure** - works out of the box and automatically upgrades if additional packages are present.\n\n## Overview\n\nClient for [Language Server\nProtocol](https://github.com/Microsoft/language-server-protocol/)\n(v3.14). [lsp-mode](https://emacs-lsp.github.io/lsp-mode) aims to\nprovide IDE-like experience by providing optional integration with the\nmost popular Emacs packages like `company`, `flycheck` and `projectile`.\n\n  - Non-blocking asynchronous calls\n  - Real-time Diagnostics/linting via\n    [flycheck](https://github.com/flycheck/flycheck) (recommended) or\n    `flymake` when Emacs \\\u003e 26 (requires flymake\\\u003e=1.0.5)\n  - Code completion - `company-capf` / `completion-at-point` (note that\n    [company-lsp](https://github.com/tigersoldier/company-lsp) is no\n    longer supported).\n  - Hovers - using [lsp-ui](https://emacs-lsp.github.io/lsp-ui)\n  - Code actions - via `lsp-execute-code-action`, [modeline](https://emacs-lsp.github.io/lsp-mode/page/main-features/#code-actions-on-modeline) (recommended) or [lsp-ui](https://emacs-lsp.github.io/lsp-ui) sideline.\n  - Code outline - using builtin\n    [imenu](https://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html)\n    or `helm-imenu`\n  - Code navigation - using builtin\n    [xref](https://www.gnu.org/software/emacs/manual/html_node/emacs/Xref.html),\n    [lsp-treemacs](https://github.com/emacs-lsp/lsp-treemacs) tree views\n    or [lsp-ui](https://emacs-lsp.github.io/lsp-ui) peek functions.\n  - Code lens\n  - Symbol highlights\n  - Formatting\n  - [Project errors](https://emacs-lsp.github.io/lsp-mode/page/main-features/#project-errors-on-modeline) on modeline\n  - Debugger - [dap-mode](https://emacs-lsp.github.io/dap-mode/)\n  - [Breadcrumb on headerline](https://emacs-lsp.github.io/lsp-mode/page/main-features/#breadcrumb-on-headerline)\n  - Helm integration -\n    [helm-lsp](https://github.com/emacs-lsp/helm-lsp/)\n  - Ivy integration - [lsp-ivy](https://github.com/emacs-lsp/lsp-ivy/)\n  - Consult integration - [consult-lsp](https://github.com/gagbo/consult-lsp)\n  - Treemacs integration -\n    [lsp-treemacs](https://github.com/emacs-lsp/lsp-treemacs)\n  - Semantic tokens as defined by LSP 3.16 (compatible language servers include recent development builds of clangd and rust-analyzer)\n  - [which-key](https://github.com/justbur/emacs-which-key/) integration\n    for better discovery\n  - [iedit](https://emacs-lsp.github.io/lsp-mode/page/main-features/#iedit)\n  - [dired](https://emacs-lsp.github.io/lsp-mode/page/main-features/#dired)\n  - [ido](https://emacs-lsp.github.io/lsp-mode/page/main-features/#integrations)\n\n## Presentations/demos\n  - [System Crafters](https://twitter.com/SystemCrafters) channel\n    [Emacs IDE Videos](https://www.youtube.com/playlist?list=PLEoMzSkcN8oNvsrtk_iZSb94krGRofFjN)\n  - [skybert](https://github.com/skybert)'s emacsconf\n    [presentation](https://media.emacsconf.org/2019/19.html) (Java)\n  - [thatwist](https://github.com/thatwist)'s ScalaUA Conference\n    [presentation](https://www.youtube.com/watch?v=x7ey0ifcqAg\u0026feature=youtu.be)\n    (Scala)\n\n## See also\n\n  - [lsp-docker](https://github.com/emacs-lsp/lsp-docker/) - provide\n    docker image with preconfigured language servers with corresponding\n    emacs configuration.\n  - [company-box](https://github.com/sebastiencs/company-box/) -\n    `company` frontend with icons.\n  - [dap-mode](https://github.com/emacs-lsp/dap-mode) - Debugger\n    integration for `lsp-mode`.\n  - [eglot](https://www.gnu.org/software/emacs/manual/html_node/eglot/) -\n    A minimal LSP implementation built in to Emacs.\n  - [which-key](https://github.com/justbur/emacs-which-key/) - Emacs\n    package that displays available keybindings in popup\n  - [projectile](https://github.com/bbatsov/projectile/) - Project\n    Interaction Library for Emacs\n  - [emacs-tree-sitter](https://github.com/ubolonton/emacs-tree-sitter) - Faster, fine-grained code highlighting via [tree-sitter](https://github.com/tree-sitter/tree-sitter).\n  - [gccemacs](https://akrl.sdf.org/gccemacs.html) - modified Emacs capable of compiling and running Emacs Lisp as native code.\n\n## Contributions\n\nContributions are very much welcome!\n\n**NOTE**\nDocumentation for clients is generated from doc comments in the clients\nthemselves (see\n[lsp-doc.el](https://github.com/emacs-lsp/lsp-mode/blob/master/docs/lsp-doc.el))\nand some metadata (see\n[lsp-clients.json](https://github.com/emacs-lsp/lsp-mode/blob/master/docs/lsp-clients.json))\nso please submit corrections accordingly.\n\n## Support the project\n\nThe `emacs-lsp` organization has more than **20,000 lines of code**, to keep all of this working,\nwe need to implement new features and help the community on a lot of issues.\n\nYou can help us keep going and improving it by **[supporting the project](https://github.com/sponsors/emacs-lsp)**\n\n\u003ca href=\"https://opencollective.com/emacs-lsp\"\u003e\u003cimg src=\"https://opencollective.com/emacs-lsp/tiers/backer.svg\" /\u003e\u003c/a\u003e\n\n### Members\n\nHere it is a list of the current `lsp-mode` members and what they are\nprimary working on/responsible for.\n\n\u003ctable id=\"emacs-lsp-members\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/totbwf\"\u003e\n          \u003cimg src=\"https://github.com/totbwf.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"totbwf\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003etotbwf\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        F#\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/brotzeit\"\u003e\n          \u003cimg src=\"https://github.com/brotzeit.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"brotzeit\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003ebrotzeit\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        Rust\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/dsyzling\"\u003e\n          \u003cimg src=\"https://github.com/dsyzling.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"dsyzling\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003edsyzling\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        Scala\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/kurnevsky\"\u003e\n          \u003cimg src=\"https://github.com/kurnevsky.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"kurnevsky\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003ekurnevsky\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        Scala | Rust\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/seagle0128\"\u003e\n          \u003cimg src=\"https://github.com/seagle0128.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"seagle0128\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003eseagle0128\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        Go | Python MS\n      \u003c/div\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/sebastiansturm\"\u003e\n          \u003cimg src=\"https://github.com/sebastiansturm.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"sebastiansturm\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003esebastiansturm\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        lsp-mode core | C++\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/vibhavp\"\u003e\n          \u003cimg src=\"https://github.com/vibhavp.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"vibhavp\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003evibhavp\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        lsp-mode core\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/yyoncho\"\u003e\n          \u003cimg src=\"https://github.com/yyoncho.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"yyoncho\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003eyyoncho\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        lsp-mode core | Java\n        \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/ericdallo\"\u003e\n          \u003cimg src=\"https://github.com/ericdallo.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"ericdallo\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003eericdallo\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        Dart/Flutter | Clojure\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/danielmartin\"\u003e\n          \u003cimg src=\"https://github.com/danielmartin.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"danielmartin\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003edanielmartin\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        C++ | Swift\n      \u003c/div\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/kiennq\"\u003e\n          \u003cimg src=\"https://github.com/kiennq.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"kiennq\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003ekiennq\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        completions | pwsh\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/nbfalcon\"\u003e\n          \u003cimg src=\"https://github.com/nbfalcon.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"nbfalcon\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003enbfalcon\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        lsp-mode core | iedit\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/psibi\"\u003e\n          \u003cimg src=\"https://github.com/psibi.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"psibi\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003epsibi\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        Terraform | Nix\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/razzmatazz\"\u003e\n          \u003cimg src=\"https://github.com/razzmatazz.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"razzmatazz\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003erazzmatazz\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        C# | F#\n      \u003c/div\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdiv\u003e\n        \u003ca href=\"https://github.com/jcs090218\"\u003e\n          \u003cimg src=\"https://github.com/jcs090218.png\" width=\"100px;\" style=\"border-radius: 50%;\" alt=\"jcs090218\"/\u003e\n          \u003cbr/\u003e\n          \u003csub\u003e\u003cb\u003ejcs090218\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n        lsp-mode core\n      \u003c/div\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-lsp%2Flsp-mode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femacs-lsp%2Flsp-mode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-lsp%2Flsp-mode/lists"}