20.3 Filled Output

filling-output  (stream &key fill-width break-characters after-line-break after-line-break-initially) &body body [Macro]

Binds stream to a stream that inserts line breaks into the textual output written to it (by such functions as write-char and write-string) so that the output is usually no wider then fill-width. The filled output is then written on the original stream. [annotate]

The stream argument is not evaluated, and must be a symbol that is bound to a stream. If stream is t, *standard-output* is used. body may have zero or more declarations as its first forms. [annotate]

fill-width specifies the width of filled lines, and defaults to 80 characters. It is specified the same way as the :x-spacing option for formatting-table. [annotate]

"Words" are separated by the characters specified in the list break-characters. When a line is broken to prevent wrapping past the end of a line, the line break is made at one of these separators. That is, filling-output does not split "words" across lines, so it might produce output wider than fill-width. [annotate]

after-line-break specifies a string to be sent to stream after line breaks; the string appears at the beginning of each new line. The string must not be wider than fill-width. [annotate]


What drawing options should be applied to the after-line-break string?

The text-style which happens to be active as the break occurs?

Or, which I consider as wiser, the text-style at the time filling-output was invoked?

[edit]-- Gilbert Baumann 2016-09-28 02:11Z

If the boolean after-line-break-initially is true, then the after-line-break text is to be written to stream before executing body, that is, at the beginning of the first line. The default is false. [annotate]