Writes the string to the stream, and adds properties if the stream supports it.
write-string-with-properties string properties &optional stream &key start end => string
A property list.
An output stream designator.
Bounding index designators of string.
write-string-with-properties writes a part of string, bounded by start and end, to stream exactly like
cl:write-string does, and then adds properties if stream supports this operation. Currently the only types of
stream that support properties are Editor streams, which means streams that write to Editor buffers.
properties must be a property list, with alternating key and value. When adding the properties, each pair of key and value is processed separately, in the order they occur in the list.
If key is
:highlight, then value must specify a
editor:face. It can be an
editor:face object, a face name (which means a symbol that was used as the name in
editor:make-face), or one of the following keywords:
Underline the text.
Make the text bold.
Make the text italic.
Make the text bold and italic.
Invert the background and foreground.
The faces that the compiler use when it outputs to an editor buffer.
The face that the editor uses in the echo area when it reports an editor error.
If key is
:menu-items, value specifies menu items that are added to the context menu that is displayed when the current point is inside string in the Editor buffer. The value must a list where each element specifies a menu-item by a list of three elements: title , function and arg. title must be a string, and is what the end user sees. If the user selects this item, function is called with arg as a single argument.
If key is not
:highlight, the key / value is added as a text property using
editor:put-text-property, with key as the property argument and value as value.
Output "A string in bold" in bold face to
"A string in bold"
write-string-with-properties can be used where ever
write-string is used, because it does exactly the same for streams that do not implement properties.
The LispWorks compiler uses
write-string-with-properties to write compiler errors, warnings and notes with
:complier-...-highlight keywords above. This is how it produces the colored errors/warnings/notes when it writes to the Listener or is invoked in the Editor.
:menu-items is implemented by the method:
Therefore, if this method is not called, for example if you make a
capi:editor-pane and pass it
:pane-menu, then items will not be added to the menu.
LispWorks User Guide and Reference Manual - 20 Sep 2017