]> git.eshelyaron.com Git - emacs.git/commit
Eglot: always call ElDoc callbacks in correct buffer (bug#78530)
authorYuan Fu <casouri@gmail.com>
Wed, 21 May 2025 07:23:15 +0000 (00:23 -0700)
committerEshel Yaron <me@eshelyaron.com>
Tue, 27 May 2025 14:29:53 +0000 (16:29 +0200)
commit6c0248eea08e43715875f9eb1a156da3a4f4b074
treebc2dc773c6a48bfb6a45d61267a1705764f46d29
parent965a7aabb09aafe960979a1b2ab7eda42ac5a045
Eglot: always call ElDoc callbacks in correct buffer (bug#78530)

Some minor modes adds their own eldoc display function to
'eldoc-display-functions' hook buffer-locally.  So when eldoc
uses 'eldoc-display-functions' to display docs, it should use
the buffer-local value of the hook.

But that's not always the case. In 'eldoc--invoke-strategy', the
code that runs 'eldoc-display-functions' hook is wrapped in a
callback function that eventually gets passed to each
documentation function in 'eldoc-documentation-functions'. So
now it's the documentation functions' responsibility to call the
eldoc callback in the original buffer.

All the eglot documentation functions indeed do that, using
'eglot--when-buffer-window' to switch to the original buffer
when calling the eldoc callback. But
'eglot-code-action-suggestion' is the exception, the callback is
called outside of the 'eglot--when-buffer-window' form.

This patch fixes that.

This bug was originally reported on eldoc-box [1]. The user
found that eldoc-box's display function are rarely called, even
though the minor mode is turned on. This patch fixes the issue.

[1] https://github.com/casouri/eldoc-box/issues/126#issuecomment-2896611278

* lisp/progmodes/eglot.el (eglot-code-action-suggestion): Move
the funcall form into the eglot--when-buffer-window form.

(cherry picked from commit 0b2ba13c978544317d1df18e7fe701c055a6419f)
lisp/progmodes/eglot.el