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.26 (30/10/2026)

This is a bugfix release to align Eglot with its latest Xref and
Refactor dependencies, fixing small issues with Emacs 26 integration and
obscure keybindings.  See commit logs for more info.


* Changes in Eglot 1.25 (28/10/2026)

** Changes to 'eglot-server-programs'

- new 'vala-language-server' for 'vala-mode'  (bug#81543)

** New variable 'eglot-completion-replace-semantics' (bug#81912)

Some LSP servers send 'InsertReplaceEdit' completions which can both
insert and replace text at point, depending on user preference.  Eglot
replaces by default (as it has done historically), but now can be
configured to insert instead.  The LSP server clangd 23, for example,
now sends such completions, so set the variable to nil to keep the
behavior of earlier clangd versions (which used a inserting
'TextEdit').  See docstring for an example.

** Code actions and renaming now use the new Refactor library

Eglot's code actions machinery has moved to the new Refactor package,
for which Eglot is now a backend.  The old commands are obsolete aliases
for Refactor's: for example, 'eglot-code-actions' is now 'M-x refactor'
and 'eglot-rename' is now 'M-x refactor-rename'.

** Better Xref integration

Eglot can now find references for any symbol, not just the one at
point, as with 'C-u M-?', as long as the server supports
'workspace/symbol'.  With a very recent Xref, Eglot also supports
'M-g .' ('xref-find-by-kind'), for finding references, declarations,
implementations or type definitions.

** 'eglot-reconnect' reuses the events buffer again

As fallout from a recent redesign, Eglot created a new events buffer,
suffixed '<2>', '<3>', etc., on every reconnection.  It also never
killed the previous hidden stderr buffer, so they piled up.

** Miscellaneous bugs fixed

bug#81593, bug#81538, bug#81514, bug#81425, bug#81150, bug#82021.


* Changes in Eglot 1.24 (23/6/2026)

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