summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/eldoc.el15
1 files changed, 14 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 85fb6c780e2..2b5d5cc0c8d 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -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'.