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 to upcoming Eglot

** New command 'M-x eglot-describe-connection'

Pops up a detailed description buffer for the current connection,
outlining aspects such as the LSP server name and version, the project
name and root path, among others.

** Improvements to 'M-x eglot-list-connections'

New key bindings: 'k' shuts down, 'r' reconnects, 'e' visits the events
buffer, 'w' shows workspace configuration, and 'RET' invokes
'eglot-describe-connection'.

** New variable 'eglot-documentation-renderer' (bug#80127)

The variable 'eglot-documentation-renderer' replaces the now-obsolete
'eglot-prefer-plaintext' and offers more control over what major mode is
used to render markdown snippets.  By default, the variable is nil and
'gfm-view-mode' from NonGNU ELPA's markdown-mode package is used if
found.  See docstring for more details.


* Changes in Eglot 1.23 (2/4/2026)

** Unbreak ELPA Eglot (github#1584)

Broken due to bad 'jsonrpc.el' dependency.

** 'eglot-report-progress' can be safely set to 'messages' (bug#80653)


* 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)
...
...
