eglot 
- Description
- The Emacs Client for LSP servers
- Latest
- eglot-1.21.tar (.sig), 2026-Jan-11, 510 KiB
- Maintainer
- João Távora <joaotavora@gmail.com>
- Website
- https://github.com/joaotavora/eglot
- Browse ELPA's repository
- CGit or Gitweb
- Badge
- Manual
- eglot
To install this package from Emacs, use list-packages.
Full description
Eglot ("Emacs Polyglot") is an Emacs LSP client that stays out of
your way.
Typing M-x eglot in some source file is often enough to get you
started, if the language server you're looking to use is installed
in your system. Please refer to the manual, available from
https://joaotavora.github.io/eglot/ or from M-x info for more usage
instructions.
If you wish to contribute changes to Eglot, please do read the user
manual first. Additionally, take the following in consideration:
* Eglot's main job is to hook up the information that language
servers offer via LSP to Emacs's UI facilities: Xref for
definition-chasing, Flymake for diagnostics, Eldoc for at-point
documentation, etc. Eglot's job is generally *not* to provide
such a UI itself, though a small number of simple
counter-examples do exist, e.g. in the `eglot-rename' command or
the `eglot-inlay-hints-mode' minor mode. When a new UI is
evidently needed, consider adding a new package to Emacs, or
extending an existing one.
* Eglot was designed to function with just the UI facilities found
in the latest Emacs core, as long as those facilities are also
available as GNU ELPA :core packages. Historically, a number of
:core packages were added or reworked in Emacs to make this
possible. This principle should be upheld when adding new LSP
features or tweaking existing ones. Design any new facilities in
a way that they could work in the absence of LSP or using some
different protocol, then make sure Eglot can link up LSP
information to it.
* There are few Eglot configuration variables. This principle
should also be upheld. If Eglot had these variables, it could be
duplicating configuration found elsewhere, bloating itself up,
and making it generally hard to integrate with the ever growing
set of LSP features and Emacs packages. For instance, this is
why one finds a single variable
`eglot-ignored-server-capabilities' instead of a number of
capability-specific flags, or why customizing the display of
LSP-provided documentation is done via ElDoc's variables, not
Eglot's.
* Linking up LSP information to other libraries is generally done
in the `eglot--managed-mode' minor mode function, by
buffer-locally setting the other library's variables to
Eglot-specific versions. When deciding what to set the variable
to, the general idea is to choose a good default for beginners
that doesn't clash with Emacs's defaults. The settings are only
in place during Eglot's LSP-enriched tenure over a project. Even
so, some of those decisions will invariably aggravate a minority
of Emacs power users, but these users can use `eglot-stay-out-of'
and `eglot-managed-mode-hook' to adjust things to their
preferences.
* On occasion, to enable new features, Eglot can have soft
dependencies on popular libraries that are not in Emacs core.
"Soft" means that the dependency doesn't impair any other use of
Eglot beyond that feature. Such is the case of the snippet
functionality, via the Yasnippet package, Markdown formatting of
at-point documentation via the markdown-mode package, and nicer
looking completions when the Company package is used.
Old versions
| eglot-1.20.tar.lz | 2026-Jan-11 | 101 KiB |
| eglot-1.19.tar.lz | 2025-Oct-24 | 91.6 KiB |
| eglot-1.18.tar.lz | 2025-Jan-20 | 84.2 KiB |
| eglot-1.17.tar.lz | 2024-Mar-31 | 72.2 KiB |
| eglot-1.16.tar.lz | 2023-Dec-27 | 71.7 KiB |
| eglot-1.15.tar.lz | 2023-Dec-28 | 66.8 KiB |
| eglot-1.9.tar.lz | 2022-Oct-11 | 62.3 KiB |
| eglot-1.8.tar.lz | 2022-Jan-12 | 51.1 KiB |
| eglot-1.7.tar.lz | 2020-Dec-18 | 265 KiB |
| eglot-1.6.tar.lz | 2020-Apr-16 | 290 KiB |
| eglot-1.0.tar.lz | 2018-Jun-22 | 247 KiB |
| eglot-0.10.tar.lz | 2018-Jun-13 | 237 KiB |
| eglot-0.9.tar.lz | 2018-Jun-10 | 237 KiB |
| eglot-0.8.tar.lz | 2018-Jun-01 | 236 KiB |
| eglot-0.7.tar.lz | 2018-May-30 | 45.7 KiB |
| eglot-0.6.tar.lz | 2018-May-27 | 45.1 KiB |
| eglot-0.5.tar.lz | 2018-May-26 | 44.6 KiB |
| eglot-0.4.tar.lz | 2018-May-21 | 40.5 KiB |
| eglot-0.3.tar.lz | 2018-May-17 | 38.9 KiB |
| eglot-0.2.tar.lz | 2018-May-15 | 38.3 KiB |
News
Eglot NEWS -*- outline -*- Copyright (C) 2018-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Eglot bug reports to 'bug-gnu-emacs@gnu.org', and Cc (or X-Debbugs-CC) the maintainer 'joaotavora@gmail.com' as well. Please read the chapter titled "Troubleshooting" in the Eglot manual, available https://joaotavora.github.io/eglot/#Troubleshooting-Eglot This file is about changes in Eglot, the Emacs client for LSP (Language Server Protocol) distributed with GNU Emacs since Emacs version 29.1 and with GNU ELPA since 2018. Note: references to some Eglot issues are presented as "github#nnnn". This refers to https://github.com/joaotavora/eglot/issues/. That is, to look up issue github#1234, go to https://github.com/joaotavora/eglot/issues/1234. * Changes in Eglot 1.21 (11/1/2026) This is a bugfix release with small fixes for semantic tokens and Emacs 26.3 compatibility. * Changes in Eglot 1.20 (11/1/2026) ** Dramatically faster handling of files with many diagnostics Diagnostic conversion between LSP and Flymake versions is now much faster. Previously, editing, e.g. a Python file with thousands of diagnostics was next to impossible to to periodic interruptions of diagnostic reports. Now it's practically unnoticeable. ** Support for LSP server multiplexers via Rassumfrassum Eglot can now leverage LSP server multiplexer programs like Rassumfrassum (invoked via the 'rass' command) to use multiple language servers in a single buffer. This enables combining spell-checkers with language servers, using multiple servers for the same language (e.g., 'ty' for type checking and 'ruff' for linting in Python), or handling multi-language files like Vue. Some invocations of 'rass' are offered as alternatives in the built-in 'eglot-server-programs' variable. The manual (readable with 'M-x eglot-manual') contains a comprehensive discussion of how to set up and use multiplexers in the new "Multi-server support" chapter. ** Support for pull diagnostics (github#1559, github#1290) For servers supporting the 'diagnosticProvider' capability, Eglot requests diagnostics explicitly rather than relying on sporadic 'publishDiagnostics' notifications, aka. "push diagnostics". The 'tsgo' server is known to support the "pull" variant exclusively, while the 'ty' server is known to support it alongside "push". ** New command 'eglot-momentary-inlay-hints' When bound to a single key in 'eglot-mode-map' this will arrange for inlay hints to be displayed as long as the key is held down, and then hidden shortly after it is released. Emacs doesn't support binding to \"key up\" events, but this function offers an approximation. It relies on measuring your keyboard initial delay and repeat rate, and may not be 100% accurate. ** Support for watching files outside the project (bug#79809) Eglot now supports and advertises the 'relativePatternSupport' sub-feature of 'didChangeWatchedFiles'. Some LSP servers use it to ask for file watches outside the current project's root and so be notified of changes to dependencies that affect the current project. ** Support for semantic tokens (bug#79374) The new minor mode 'eglot-semantic-tokens-mode' provides enhanced syntax highlighting based on the language server's analysis, going beyond traditional regular-expression-based fontification. The 'eglot-semantic-faces' customization group contains options for controlling which token types and modifiers to consider, as well as faces for customizing their appearance. The minor mode is on by default: consult the manual on how to turn it off. ** Reading the Eglot manual in Emacs is easy again The command 'M-x eglot-manual' is now easier to reach and directly drops the user into the manual. * Changes in Eglot 1.19 (23/10/2025) ** Support for call and type hierarchies The new commands 'eglot-show-type-hierarchy' and 'eglot-show-call-hierarchy', when invoked on a symbol, pop up a special ... ...