ansi_term.pl -- Print decorated text to ANSI consoles
This library allows for exploiting the color and attribute facilities of most modern terminals using ANSI escape sequences. This library provides the following:
- ansi_format/3 allows writing messages to the terminal with ansi attributes.
- It defines the hook prolog:message_line_element/2, which provides ansi attributes for print_message/2.
- ansi_format(+Attributes, +Format, +Args) is det
- Format text with ANSI attributes. This predicate behaves as
format/2 using Format and Args, but if the
current_output
is a terminal, it adds ANSI escape sequences according to Attributes. For example, to print a text in bold cyan, do?- ansi_format([bold,fg(cyan)], 'Hello ~w', [world]).
Attributes is either a single attribute or a list thereof. The attribute names are derived from the ANSI specification. See the source for sgr_code/2 for details. Some commonly used attributes are:
- bold
- underline
fg(Color)
,bg(Color)
,hfg(Color)
,hbg(Color)
Defined color constants are below.
default
can be used to access the default color of the terminal.- black, red, green, yellow, blue, magenta, cyan, white
ANSI sequences are sent if and only if
- The
current_output
has the propertytty(true)
(see stream_property/2). - The Prolog flag
color_term
istrue
.
- sgr_code(+Name, -Code)[private]
- True when code is the Select Graphic Rendition code for Name.
The defined names are given below. Note that most terminals only
implement this partially.
reset all attributes off bold faint italic underline blink(slow)
blink(rapid)
negative conceal crossed_out font(primary)
font(N)
Alternate font (1..8) fraktur underline(double)
intensity(normal)
fg(Name)
Color name bg(Name)
Color name framed encircled overlined ideogram(underline)
right_side_line ideogram(underline(double))
right_side_line(double)
ideogram(overlined)
left_side_line ideogram(stress_marking)
-Off Switch attributes off hfg(Name)
Color name hbg(Name)
Color name - prolog:message_line_element(+Stream, +Term) is semidet[multifile]
- Hook implementation that deals with
ansi(+Attr, +Fmt, +Args)
in message specifications.