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

Improve and extend documentation of ElDoc

* lisp/emacs-lisp/eldoc.el (eldoc-documentation-strategy)
(eldoc-documentation-enthusiast)
(eldoc-documentation-compose-eagerly)
(eldoc-documentation-compose, eldoc-documentation-default)
(eldoc-minibuffer-message, eldoc-idle-delay)
(eldoc-print-after-edit)
(eldoc-echo-area-display-truncation-message)
(eldoc-echo-area-use-multiline-p)
(eldoc-echo-area-prefer-doc-buffer): Doc string fixes.

* doc/emacs/emacs.texi (Top):
* doc/emacs/programs.texi (Documentation, Programming Language Doc):
Rename "Lisp Doc" to "Programming Language Doc", including in
parent menus.  All references changed.
(Programming Language Doc): Formerly "Lisp Doc".  Rewrite to not
be specific to Emacs Lisp.  Improve markup and wording.  Document
more commands and variables.
* doc/emacs/maintaining.texi (Maintaining): Improve indexing.
This commit is contained in:
Eli Zaretskii 2022-10-21 16:10:08 +03:00
parent ea70e545c9
commit 8ce2b89aa1
9 changed files with 187 additions and 96 deletions

View file

@ -55,21 +55,24 @@
:group 'extensions)
(defcustom eldoc-idle-delay 0.50
"Number of seconds of idle time to wait before printing.
"Number of seconds of idle time to wait before displaying documentation.
If user input arrives before this interval of time has elapsed after the
last input, no documentation will be printed.
last input event, no documentation will be displayed.
If this variable is set to 0, no idle time is required."
If this variable is set to 0, display the documentation without any delay."
:type 'number)
(defcustom eldoc-print-after-edit nil
"If non-nil, eldoc info is only shown when editing.
"If non-nil, eldoc info is only shown after editing commands.
Changing the value requires toggling `eldoc-mode'."
:type 'boolean)
(defcustom eldoc-echo-area-display-truncation-message t
"If non-nil, provide verbose help when a message has been truncated.
If nil, truncated messages will just have \"...\" appended."
When this is non-nil, and the documentation string was truncated to
fit in the echo-area, the documentation will be followed by an
explanation of how to display the full documentation text.
If nil, truncated messages will just have \"...\" to indicate truncation."
:type 'boolean
:version "28.1")
@ -93,22 +96,24 @@ Note that this variable has no effect, unless
(defcustom eldoc-echo-area-use-multiline-p 'truncate-sym-name-if-fit
"Allow long ElDoc doc strings to resize echo area display.
If value is t, never attempt to truncate messages, even if the
echo area must be resized to fit.
If the value is t, never attempt to truncate messages, even if the
echo area must be resized to fit. In that case, Emacs will resize
the mini-window up to the limit set by `max-mini-window-height'.
If the value is a positive number, it is used to calculate a
number of logical lines of documentation that ElDoc is allowed to
put in the echo area. If a positive integer, the number is used
directly, while a float specifies the number of lines as a
proportion of the echo area frame's height.
number of screen lines of documentation that ElDoc is allowed to
put in the echo area. A positive integer specifies the maximum
number of lines directly, while a floating-point number specifies
the number of screen lines as a fraction of the echo area frame's
height.
If value is the symbol `truncate-sym-name-if-fit', the part of
If the value is the symbol `truncate-sym-name-if-fit', the part of
the doc string that represents a symbol's name may be truncated
if it will enable the rest of the doc string to fit on a single
line, without resizing the echo area.
If value is nil, a doc string is always truncated to fit in a
single line of display in the echo area.
If the value is nil, a doc string is always truncated to fit in a
single screen line of echo-area display.
Any resizing of the echo area additionally respects
`max-mini-window-height'."
@ -121,12 +126,12 @@ Any resizing of the echo area additionally respects
line" truncate-sym-name-if-fit)))
(defcustom eldoc-echo-area-prefer-doc-buffer nil
"Prefer ElDoc's documentation buffer if it is showing in some frame.
"Prefer ElDoc's documentation buffer if it is displayed in some window.
If this variable's value is t, ElDoc will skip showing
documentation in the echo area if the dedicated documentation
buffer (given by `eldoc-doc-buffer') is being displayed in some
window. If the value is the symbol `maybe', then the echo area
is only skipped if the documentation doesn't fit there."
buffer (displayed by `eldoc-doc-buffer') is already displayed in
some window. If the value is the symbol `maybe', then the echo area
is only skipped if the documentation needs to be truncated there."
:type 'boolean)
(defface eldoc-highlight-function-argument
@ -287,8 +292,10 @@ reflect the change."
(put 'eldoc-mode-line-string 'risky-local-variable t)
(defun eldoc-minibuffer-message (format-string &rest args)
"Display messages in the mode-line when in the minibuffer.
Otherwise work like `message'."
"Display message specified by FORMAT-STRING and ARGS on the mode-line as needed.
This function displays the message produced by formatting ARGS
with FORMAT-STRING on the mode line when the current buffer is a minibuffer.
Otherwise, it displays the message like `message' would."
(if (minibufferp)
(progn
(add-hook 'minibuffer-exit-hook
@ -632,8 +639,8 @@ If INTERACTIVE is t, also display the buffer."
(when interactive (eldoc-doc-buffer t)))
(defun eldoc-documentation-default ()
"Show first doc string for item at point.
Default value for `eldoc-documentation-strategy'."
"Show the first non-nil documentation string for item at point.
This is the default value for `eldoc-documentation-strategy'."
(run-hook-with-args-until-success 'eldoc-documentation-functions
(eldoc--make-callback :patient)))
@ -651,18 +658,18 @@ else wait for all doc strings."
t)
(defun eldoc-documentation-compose ()
"Show multiple doc strings at once after waiting for all.
Meant as a value for `eldoc-documentation-strategy'."
"Show multiple documentation strings together after waiting for all of them.
This is meant to be used as a value for `eldoc-documentation-strategy'."
(eldoc--documentation-compose-1 nil))
(defun eldoc-documentation-compose-eagerly ()
"Show multiple doc strings at once as soon as possible.
Meant as a value for `eldoc-documentation-strategy'."
"Show multiple documentation strings one by one as soon as possible.
This is meant to be used as a value for `eldoc-documentation-strategy'."
(eldoc--documentation-compose-1 t))
(defun eldoc-documentation-enthusiast ()
"Show most important doc string produced so far.
Meant as a value for `eldoc-documentation-strategy'."
"Show most important documentation string produced so far.
This is meant to be used as a value for `eldoc-documentation-strategy'."
(run-hook-wrapped 'eldoc-documentation-functions
(lambda (f)
(let* ((callback (eldoc--make-callback :enthusiast))
@ -692,40 +699,42 @@ Meant as a value for `eldoc-documentation-strategy'."
(eldoc--documentation-strategy-defcustom eldoc-documentation-strategy
eldoc-documentation-function
#'eldoc-documentation-default
"How to collect and organize results of `eldoc-documentation-functions'.
"How to collect and display results of `eldoc-documentation-functions'.
This variable controls how `eldoc-documentation-functions', which
specifies the sources of documentation, is queried and how its
results are organized before being displayed to the user. The
following values are allowed:
This variable controls how to call the functions in the special hook
`eldoc-documentation-functions', and how to organize their results
for display to the user. The functions in `eldoc-documentation-functions'
are the source of documentation, and act as back-end for ElDoc.
- `eldoc-documentation-default': calls functions in the special
hook in order until one is found that produces a doc string
value. Display only that value;
The following values are supported:
- `eldoc-documentation-compose': calls all functions in the
special hook and displays all of the resulting doc strings
together. Wait for all strings to be ready, and preserve their
relative order as specified by the order of functions in the hook;
- `eldoc-documentation-default': Call functions in the special
hook in order, until one of them returns a non-nil string
value. Display only that string.
- `eldoc-documentation-compose-eagerly': calls all functions in
the special hook and displays as many of the resulting doc
strings as possible, as soon as possible. Preserves the
relative order of doc strings;
- `eldoc-documentation-compose': Call all the functions in the
special hook and display all of the resulting strings together,
after all of the functions were called, and in the order of the
functions in the hook.
- `eldoc-documentation-enthusiast': calls all functions in the
special hook and displays only the most important resulting
docstring one at any given time. A function appearing first in
the special hook is considered more important.
- `eldoc-documentation-compose-eagerly': Call all the functions in
the special hook, and display each non-nil string as soon as it
is returned by a function, before calling the next function.
This variable can also be set to a function of no args that
returns something other than a string or nil and allows for some
- `eldoc-documentation-enthusiast': Call all the functions in the
special hook, and display only the most important resulting
string at any given time. A function appearing first in
the special hook is considered more important than those which
appear after it.
This variable can also be set to a function of no arguments that
returns something other than a string or nil, and allows for some
or all of the special hook `eldoc-documentation-functions' to be
run. In that case, the strategy function should follow that
other variable's protocol closely and endeavor to display the
resulting doc strings itself.
other variable's protocol closely and display the resulting doc
strings itself.
For backward compatibility to the \"old\" protocol, this variable
For backward compatibility with the \"old\" protocol, this variable
can also be set to a function that returns nil or a doc string,
depending whether or not there is documentation to display at
all."