1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 02:20:21 -08:00

New Eldoc function `eldoc-show-help-at-pt'

Show `help-at-pt' string via Eldoc as an alternative to the
`help-at-pt-display-when-idle' timer.  The help-at-pt timer
competes with Eldoc for the echo area, such that the two
mechanisms do not work well together.  Therefore when using
Eldoc, the setting `eldoc-help-at-pt' may be preferable.
* lisp/emacs-lisp/eldoc.el (eldoc-help-at-pt): New customization option.
(eldoc-show-help-at-pt): New Eldoc function.
(eldoc-documentation-functions): Register the new function.
* lisp/help-at-pt.el (help-at-pt-display-when-idle): Mention
`eldoc-help-at-pt' in the docstring.
* doc/emacs/help.texi: Document `eldoc-help-at-pt'.
* etc/NEWS: Announce the change.  (Bug#77169)
This commit is contained in:
Daniel Mendler 2025-03-22 10:29:45 +01:00 committed by Eli Zaretskii
parent b832d37410
commit ab71699e5f
4 changed files with 28 additions and 3 deletions

View file

@ -138,6 +138,13 @@ is only skipped if the documentation needs to be truncated there."
(const :tag "Skip echo area if truncating" maybe))
:version "28.1")
(defcustom eldoc-help-at-pt nil
"If non-nil, show `help-at-pt-kbd-string' at point via Eldoc.
This setting is an alternative to `help-at-pt-display-when-idle'. If
the value is non-nil, `eldoc-show-help-at-pt' will show help-at-point
via Eldoc."
:type 'boolean)
(defface eldoc-highlight-function-argument
'((t (:inherit bold)))
"Face used for the argument at point in a function's argument list.
@ -410,7 +417,7 @@ Also store it in `eldoc-last-message' and return that value."
(overlay-end show-paren--overlay)))))))
(defvar eldoc-documentation-functions nil
(defvar eldoc-documentation-functions (list #'eldoc-show-help-at-pt)
"Hook of functions that produce doc strings.
A doc string is typically relevant if point is on a function-like
@ -957,6 +964,12 @@ the docstrings eventually produced, using
(setq eldoc--last-request-state token)
(eldoc--invoke-strategy nil))))))
(defun eldoc-show-help-at-pt (&rest _)
"Show help at point via Eldoc if `eldoc-help-at-pt' is non-nil.
Intended for `eldoc-documentation-functions' (which see)."
(when-let* ((help (and eldoc-help-at-pt (help-at-pt-kbd-string))))
(format "Help: %s" (substitute-command-keys help))))
;; This section only affects ElDoc output to the echo area, as in
;; `eldoc-display-in-echo-area'.