mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Optionally display function docstring in eldoc
Allow display (optionally) function docstring in eldoc. (Bug#77124) * etc/NEWS: Document changes. * lisp/progmodes/elisp-mode.el (elisp-eldoc-funcall-with-docstring-length): New user option. (elisp-eldoc-funcall-with-docstring): New function.
This commit is contained in:
parent
c73e4cdece
commit
8fc18d0968
2 changed files with 57 additions and 0 deletions
13
etc/NEWS
13
etc/NEWS
|
|
@ -565,6 +565,19 @@ The prompts 'opstring' and 'active-opstring' can now either be strings
|
|||
or functions. This is useful when your prompts can benefit from dynamic
|
||||
content.
|
||||
|
||||
** ElDoc
|
||||
---
|
||||
*** New eldoc function 'elisp-eldoc-funcall-with-docstring'.
|
||||
This function includes the current function docstring in eldoc echo area
|
||||
and can be used as a more detailed alternative to 'elisp-eldoc-funcall'.
|
||||
|
||||
---
|
||||
*** New user option 'elisp-eldoc-funcall-with-docstring-length'.
|
||||
This user option specifies how long function docstring must be displayed
|
||||
in 'elisp-eldoc-funcall-with-docstring'. If set to 'short' only display
|
||||
cut docstring before period. Otherwise if set to 'full', display full
|
||||
docstring.'
|
||||
|
||||
---
|
||||
** Buffer Menu
|
||||
|
||||
|
|
|
|||
|
|
@ -1845,6 +1845,50 @@ Intended for `eldoc-documentation-functions' (which see)."
|
|||
'font-lock-function-name-face
|
||||
'font-lock-keyword-face)))))
|
||||
|
||||
(defcustom elisp-eldoc-funcall-with-docstring-length 'short
|
||||
"Control length of doc string shown by `elisp-eldoc-funcall-with-docstring'.
|
||||
If set to `short', only show the first sentence of the doc string.
|
||||
Otherwise if set to `full', display full doc string."
|
||||
:type '(choice
|
||||
(const :tag "Short" short)
|
||||
(const :tag "Full" full))
|
||||
:group 'elisp
|
||||
:version "31.1")
|
||||
|
||||
(defun elisp-eldoc-funcall-with-docstring (callback &rest _ignored)
|
||||
"Document function call at point by calling CALLBACK.
|
||||
Intended for `eldoc-documentation-functions' (which see).
|
||||
Compared to `elisp-eldoc-funcall', this also includes the
|
||||
current function doc string, doc string length depends on
|
||||
`elisp-eldoc-funcall-with-docstring-length'."
|
||||
(let* ((sym-info (elisp--fnsym-in-current-sexp))
|
||||
(fn-sym (car sym-info))
|
||||
(doc (when (fboundp fn-sym)
|
||||
(propertize
|
||||
(cdr (help-split-fundoc
|
||||
(condition-case nil (documentation fn-sym t)
|
||||
(invalid-function nil))
|
||||
fn-sym))
|
||||
'face 'font-lock-doc-face))))
|
||||
(when fn-sym
|
||||
(funcall callback
|
||||
(concat (apply #'elisp-get-fnsym-args-string sym-info)
|
||||
;; Ensure not display the docstring in the
|
||||
;; mode-line.
|
||||
(when (and doc (not (minibufferp)))
|
||||
(concat
|
||||
"\n"
|
||||
(pcase elisp-eldoc-funcall-with-docstring-length
|
||||
('full doc)
|
||||
('short
|
||||
(save-match-data
|
||||
(when (string-match "\\." doc)
|
||||
(concat "\n" (substring doc 0 (match-end 0))))))))))
|
||||
:thing fn-sym
|
||||
:face (if (functionp fn-sym)
|
||||
'font-lock-function-name-face
|
||||
'font-lock-keyword-face)))))
|
||||
|
||||
(defun elisp-eldoc-var-docstring (callback &rest _ignored)
|
||||
"Document variable at point by calling CALLBACK.
|
||||
Intended for `eldoc-documentation-functions' (which see).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue