Version 1.22 of package Eglot has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Eglot describes itself as: ================================ The Emacs Client for LSP servers ================================ More at https://elpa.gnu.org/packages/eglot.html ## Summary: 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: ## Recent 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 '[email protected]', and Cc (or X-Debbugs-CC) the maintainer '[email protected]' 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.22 (1/4/2026) ** File watch limits to prevent resource exhaustion (github#1568) The new variable 'eglot-max-file-watches' limits the number of file watches that can be created. Some language servers request watching for a very large number of directories (e.g. Python virtualenvs), which can exhaust system resources and cause slow startup. ** Support for complex workspace edits (create/rename/delete files) Eglot now advertises support for file resource operations in workspace edits and can handle create, rename, and delete file operations. The confirmation UI has been reworked to handle mixed operation types. The 'eglot-confirm-server-edits' defcustom has been overhauled and now also accepts file operation kinds as keys in the alist form, providing more fine-grained control over what confirmation mechanism to use. ** 'eglot-advertise-cancellation' now defaults to t The variable 'eglot-advertise-cancellation' now defaults to t, which means Eglot will send '$/cancelRequest' notifications to servers when it thinks responses to inflight requests are no longer useful. The current 2026 LSP landscape (especially gopls and ocamllsp) suggests this is beneficial and helps servers avoid costly useless work. ** Imenu setup is more predictable (github#1569) Eglot now sets 'imenu-create-index-function' using ':override' advice, making the integration cleaner and more predictable. ** Diagnostics from unopened files recalled on session start (github#1531) Some servers (notably rust-analyzer) publish diagnostics for all project files at startup and never republish them on 'didOpen'. Eglot now saves such early diagnostics and reports them when those files are subsequently opened. ** Changes to 'eglot-server-programs' - new 'static-ls' for 'haskell-mode' - new 'wat_server' for 'wat-mode' (WebAssembly Text) (bug#80188) - new 'elp' replaces 'erlang_ls' for 'erlang-mode' (bug#79943) ** Fixed textDocument/prepareRename support (github#1554) Eglot now properly checks server capabilities before sending prepareRename requests. * 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 ... ...
