| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Temporary displays are used by Lisp programs to put output into a buffer and then present it to the user for perusal rather than for editing. Many help commands use this feature.
If the forms do not change the major mode in the output buffer, so
that it is still Help mode at the end of their execution, then
with-output-to-temp-buffer makes this buffer read-only at the
end, and also scans it for function and variable names to make them into
clickable cross-references.
The string buffer-name specifies the temporary buffer, which
need not already exist. The argument must be a string, not a buffer.
The buffer is erased initially (with no questions asked), and it is
marked as unmodified after with-output-to-temp-buffer exits.
with-output-to-temp-buffer binds standard-output to the
temporary buffer, then it evaluates the forms in forms. Output
using the Lisp output functions within forms goes by default to
that buffer (but screen display and messages in the echo area, although
they are "output" in the general sense of the word, are not affected).
See section 19.5 Output Functions.
Several hooks are available for customizing the behavior of this construct; they are listed below.
The value of the last form in forms is returned.
---------- Buffer: foo ----------
This is the contents of foo.
---------- Buffer: foo ----------
(with-output-to-temp-buffer "foo"
(print 20)
(print standard-output))
=> #<buffer foo>
---------- Buffer: foo ----------
20
#<buffer foo>
---------- Buffer: foo ----------
|
nil, with-output-to-temp-buffer
calls it as a function to do the job of displaying a help buffer. The
function gets one argument, which is the buffer it should display.
It is a good idea for this function to run temp-buffer-show-hook
just as with-output-to-temp-buffer normally would, inside of
save-selected-window and with the chosen window and buffer
selected.
with-output-to-temp-buffer before
evaluating body. When the hook runs, the help buffer is current.
This hook is normally set up with a function to put the buffer in Help
mode.
with-output-to-temp-buffer after
displaying the help buffer. When the hook runs, the help buffer is
current, and the window it was displayed in is selected. This hook is
normally set up with a function to make the buffer read only, and find
function names and variable names in it, provided the major mode is
still Help mode.
The momentary display remains until the next input event. If the next
input event is char, momentary-string-display ignores it
and returns. Otherwise, that event remains buffered for subsequent use
as input. Thus, typing char will simply remove the string from
the display, while typing (say) C-f will remove the string from
the display and later (presumably) move point forward. The argument
char is a space by default.
The return value of momentary-string-display is not meaningful.
If the string string does not contain control characters, you can
do the same job in a more general way by creating (and then subsequently
deleting) an overlay with a before-string property.
See section 38.9.1 Overlay Properties.
If message is non-nil, it is displayed in the echo area
while string is displayed in the buffer. If it is nil, a
default message says to type char to continue.
In this example, point is initially located at the beginning of the second line:
---------- Buffer: foo ---------- This is the contents of foo. -!-Second line. ---------- Buffer: foo ---------- (momentary-string-display "**** Important Message! ****" (point) ?\r "Type RET when done reading") => t ---------- Buffer: foo ---------- This is the contents of foo. **** Important Message! ****Second line. ---------- Buffer: foo ---------- ---------- Echo Area ---------- Type RET when done reading ---------- Echo Area ---------- |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |