Add basic documentation
This commit is contained in:
parent
43b2f86d88
commit
b0fc09e3ad
2 changed files with 567 additions and 9 deletions
40
README.org
40
README.org
|
@ -2,3 +2,43 @@
|
||||||
|
|
||||||
#+TITLE: README for Guile-Termenv
|
#+TITLE: README for Guile-Termenv
|
||||||
|
|
||||||
|
~guile-termenv~ is a port of [[https://github.com/muesli/termenv][termenv]] to Guile. It provides a convenient
|
||||||
|
interface to ANSI control sequences so you can color and style output without
|
||||||
|
need to bother with arcane symbols, all to the height of your terminal's
|
||||||
|
capabilities.
|
||||||
|
|
||||||
|
While ~guile-termenv~ is not a 1:1 port of ~termenv~, it does provide much of
|
||||||
|
the same functionality, and it aims to fill the same niche in the Guile
|
||||||
|
ecosystem that ~termenv~ does in the Go ecosystem.
|
||||||
|
|
||||||
|
* Building
|
||||||
|
|
||||||
|
~guile-termenv~ is developed using [[https://guix.gnu.org][Guix]] and the simplest way to build it is with
|
||||||
|
Guix. Running ~guix build -f guix.scm~ will build and test the project, placing
|
||||||
|
it in the store. Instead using ~guix shell -f guix.scm~ will create an
|
||||||
|
environment with the project, and ~guix profile -if guix.scm~ will install it.
|
||||||
|
|
||||||
|
If you wish to use a more manual build methodology, you can replicate the build
|
||||||
|
steps like so:
|
||||||
|
|
||||||
|
#+BEGIN_SRC shell
|
||||||
|
guix shell -Df guix.scm
|
||||||
|
hall build -x
|
||||||
|
autoreconf -vif
|
||||||
|
./configure
|
||||||
|
make -j
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Note that it is not advised to install the project this way.
|
||||||
|
|
||||||
|
If you don't have or don't want to use Guix, ~guile-termenv~ requires the
|
||||||
|
following dependencies to build:
|
||||||
|
|
||||||
|
- autoconf
|
||||||
|
- automake
|
||||||
|
- guile-hall
|
||||||
|
- pkg-config
|
||||||
|
- texinfo
|
||||||
|
|
||||||
|
With those dependencies installed, the same build commands as above will work,
|
||||||
|
although the ~guix~ command becomes redundant.
|
||||||
|
|
|
@ -3,14 +3,17 @@
|
||||||
|
|
||||||
@c %**start of header
|
@c %**start of header
|
||||||
@setfilename guile-termenv.info
|
@setfilename guile-termenv.info
|
||||||
@documentencoding UTF-8
|
|
||||||
@settitle Guile-Termenv Reference Manual
|
@settitle Guile-Termenv Reference Manual
|
||||||
|
@documentencoding UTF-8
|
||||||
|
@documentlanguage en
|
||||||
|
@syncodeindex vr fn
|
||||||
|
@syncodeindex tp fn
|
||||||
@c %**end of header
|
@c %**end of header
|
||||||
|
|
||||||
@include version.texi
|
@include version.texi
|
||||||
|
|
||||||
@copying
|
@copying
|
||||||
Copyright @copyright{} 2024
|
Copyright @copyright{} 2024 Vivianne Langdon
|
||||||
|
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||||
|
@ -22,12 +25,13 @@ Documentation License''.
|
||||||
|
|
||||||
@dircategory The Algorithmic Language Scheme
|
@dircategory The Algorithmic Language Scheme
|
||||||
@direntry
|
@direntry
|
||||||
* Guile-Termenv: (guile-termenv).
|
* Guile-Termenv: (guile-termenv). ANSI style and color support for
|
||||||
|
terminal applications.
|
||||||
@end direntry
|
@end direntry
|
||||||
|
|
||||||
@titlepage
|
@titlepage
|
||||||
@title The Guile-Termenv Manual
|
@title The Guile-Termenv Manual
|
||||||
@author
|
@author Juliana Rat
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@vskip 0pt plus 1filll
|
@vskip 0pt plus 1filll
|
||||||
|
@ -44,17 +48,531 @@ Edition @value{EDITION} @*
|
||||||
@top Guile-Termenv
|
@top Guile-Termenv
|
||||||
|
|
||||||
This document describes Guile-Termenv version @value{VERSION}.
|
This document describes Guile-Termenv version @value{VERSION}.
|
||||||
|
Guile-Termenv is a Guile port of the Go library
|
||||||
|
@url{https://github.com/muesli/termenv,termenv}. It analyzes
|
||||||
|
information about a terminal's ANSI and color support, then uses this
|
||||||
|
to provide a convenient interface for coloring and styling output. It
|
||||||
|
is incredibly powerful, and also surprisingly simple. This manual
|
||||||
|
provides a brief illustrative tutorial followed by API documentation.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Introduction:: Why Guile-Termenv?
|
* Tutorial:: An illustrative tutorial
|
||||||
|
* API:: Documentation for public procedures
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@c *********************************************************************
|
@c *********************************************************************
|
||||||
@node Introduction
|
@node Tutorial
|
||||||
@chapter Introduction
|
@chapter Tutorial
|
||||||
|
|
||||||
INTRODUCTION HERE
|
TODO
|
||||||
|
|
||||||
This documentation is a stub.
|
@c *********************************************************************
|
||||||
|
@node API
|
||||||
|
@chapter API
|
||||||
|
|
||||||
|
The @code{guile-termenv} API aims to be simple and approachable while
|
||||||
|
allowing functional patterns and composition.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Color:: Procedures to colorize text
|
||||||
|
* Hyperlink:: Procedures to convert text to hyperlinks
|
||||||
|
* Screen:: Procedures for manipulating the terminal screen
|
||||||
|
* Style:: Procedures for styling text
|
||||||
|
* Unix:: A procedure to determine a terminal's best color profile
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Color
|
||||||
|
@section Color
|
||||||
|
|
||||||
|
The @code{(termenv color)} module provides a record type representing
|
||||||
|
colors, and a set of procedures for creating and using that record.
|
||||||
|
|
||||||
|
Several color-related procedures accept what this documentation refers
|
||||||
|
to as a @dfn{hexcode}. Hexcodes are hexadecimal representations of
|
||||||
|
binary data associated with color values. Typically, a hexcode
|
||||||
|
consists of six hexadecimal digits split into three pairs. The first
|
||||||
|
pair represents the red value, the second pair represents the green
|
||||||
|
value, and the third pair represents the blue value. It is also
|
||||||
|
possible to use a single digit for each value if both digits are the
|
||||||
|
same. In this case, only one digit may be used per color.
|
||||||
|
|
||||||
|
@code{termenv} accepts hexcodes as strings or as numbers, and it
|
||||||
|
recommends numbers. If using numbers, it is further recommended to use
|
||||||
|
Guile's base formatting prefix @code{#X} before the value for clarity.
|
||||||
|
If using strings, prefixes of any kind are optional and may be either
|
||||||
|
@code{#} or @code{0x}.
|
||||||
|
|
||||||
|
@deftp {Record} color r g b type
|
||||||
|
|
||||||
|
Record representing a color. This record serves as the central data
|
||||||
|
type of this module. It has four fields:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
@code{r}: Number in the range 0 to 255 representing the red value of
|
||||||
|
the color.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@code{g}: Number in the range 0 to 255 representing the green value of
|
||||||
|
the color.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@code{b}: Number in the range 0 to 255 representing the blue value of
|
||||||
|
the color.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@code{type}: Either @code{'foreground} or @code{'background}.
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@end deftp
|
||||||
|
|
||||||
|
@deffn {Procedure} color-r color
|
||||||
|
|
||||||
|
Accessor for the @code{r} field of the record @var{color},
|
||||||
|
representing its red value.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} color-g color
|
||||||
|
|
||||||
|
Accessor for the @code{g} field of the record @var{color},
|
||||||
|
representing its green value.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} color-b color
|
||||||
|
|
||||||
|
Accessor the @code{b} field of the record @var{color}, representing
|
||||||
|
its blue value.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} color? arg
|
||||||
|
|
||||||
|
Predicate for whether or not @var{arg} is a @code{color}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} make-background hex
|
||||||
|
|
||||||
|
Create a background @code{color} from the hexcode @var{hex}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} make-foreground hex
|
||||||
|
|
||||||
|
Create a foreground @code{color} from the hexcode @var{hex}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} hex->color hex [type]
|
||||||
|
|
||||||
|
Return a @code{color} representing the hexcode @var{hex}, optionally
|
||||||
|
with the given @var{type} (@code{'foreground} or @code{'background}).
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@defvr {Parameter} current-color-profile
|
||||||
|
|
||||||
|
Symbol representing the color profile of the current output port. The
|
||||||
|
possible values are:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
@var{true-color}: Port supports 24-bit ``true color'' representing
|
||||||
|
about 16 million colors.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@var{ansi256}: Port supports a 256-color palette consisting of 216
|
||||||
|
colors, 16 ANSI colors, and 24 shades of gray. Color values are
|
||||||
|
24-bit.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@var{ansi}: Port supports 16 colors, bold, italics, and background
|
||||||
|
coloration.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@var{ascii}: Port does not support colors or styles. In practice, this
|
||||||
|
means the output port is not a terminal.
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@end defvr
|
||||||
|
|
||||||
|
@deffn {Procedure} color->sequence color
|
||||||
|
|
||||||
|
Return a string of terminal control codes representing the
|
||||||
|
@code{color} record @var{color}. Uses @code{current-color-profile}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} color->ansi color
|
||||||
|
|
||||||
|
Convert the 24-bit ``true color'' @var{color} to the nearest ANSI
|
||||||
|
color equivalent.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} color->ansi256 color
|
||||||
|
|
||||||
|
Convert the 24-bit ``true color'' @var{color} to the nearest 256-color
|
||||||
|
ANSI equivalent.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@node Hyperlink
|
||||||
|
@section Hyperlink
|
||||||
|
|
||||||
|
The @code{(termenv hyperlink)} module provides procedures to create
|
||||||
|
active hyperlinks in the terminal.
|
||||||
|
|
||||||
|
@deffn {Procedure} hyperlink link [name]
|
||||||
|
|
||||||
|
Create a terminal control sequence which displays the optional string
|
||||||
|
@var{name} as a hyperlink to @var{link}. If @var{name} is not
|
||||||
|
provided, @var{link} is used verbatim.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} format-hyperlink link [name] [port (current-output-port)]
|
||||||
|
|
||||||
|
Write the string @var{name} to @var{port}, formatted as a hyperlink to
|
||||||
|
@var{link}. This is equivalent to:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(format port (hyperlink link name))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
If @var{name} is not provided, @var{link} is used verbatim. If
|
||||||
|
@var{port} is not provided, @code{current-output-port} is used.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@node Screen
|
||||||
|
@section Screen
|
||||||
|
|
||||||
|
The @code{(termenv screen)} module provides facilities for controlling
|
||||||
|
the general state of a terminal.
|
||||||
|
|
||||||
|
@deffn {Procedure} reset [port (current-output-port)]
|
||||||
|
|
||||||
|
Reset @var{port} to its default state, removing any active styles.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} set-foreground-color hex [port (current-output-port)]
|
||||||
|
|
||||||
|
Apply the hexcode @var{hex} as the default foreground color for
|
||||||
|
@var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} set-background-color hex [port (current-output-port)]
|
||||||
|
|
||||||
|
Apply the hexcode @var{hex} as the default background color for
|
||||||
|
@var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} set-cursor-color hex [port (current-output-port)]
|
||||||
|
|
||||||
|
Apply the hexcode @var{hex} as the default cursor color for
|
||||||
|
@var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} save-screen [port (current-output-port)]
|
||||||
|
|
||||||
|
Save the state of @var{port} so that it may be restored later with
|
||||||
|
@code{restore-screen}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} restore-screen [port (current-output-port)]
|
||||||
|
|
||||||
|
Restore @var{port} to a state previously saved with
|
||||||
|
@code{save-screen}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
Terminals provide a facility called an @dfn{alternate screen} which
|
||||||
|
allows a program to write to a blank slate which is wiped away when
|
||||||
|
the program terminates. The following procedures allow programmers to
|
||||||
|
emit control codes entering and exiting this screen.
|
||||||
|
|
||||||
|
@deffn {Procedure} alt-screen [port (current-output-port)]
|
||||||
|
|
||||||
|
Switch @var{port} to the alternate screen buffer.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} exit-alt-screen [port (current-output-port)]
|
||||||
|
|
||||||
|
Switch @var{port} from the alternate screen buffer to the main screen
|
||||||
|
buffer.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} hide-cursor [port (current-output-port)]
|
||||||
|
|
||||||
|
Hide the cursor of @var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} show-cursor [port (current-output-port)]
|
||||||
|
|
||||||
|
Show the cursor of @var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} save-cursor-position [port (current-output-port)]
|
||||||
|
|
||||||
|
Save the current position of the cursor of @var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} restore-cursor-position [port (current-output-port)]
|
||||||
|
|
||||||
|
Restore the saved position of the cursor of @var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
Terminals have a concept of a @dfn{scrolling region}. This is the
|
||||||
|
region of a terminal screen which is actively being controlled, and
|
||||||
|
according to whose coordinates the cursor is moved. Most of the
|
||||||
|
following procedures operate on the active scrolling region.
|
||||||
|
|
||||||
|
@deffn {Procedure} change-scrolling-region top bottom [port (current-output-port)]
|
||||||
|
|
||||||
|
Set the scrolling region of @var{port} to the area from row number
|
||||||
|
@var{top} to row number @var{bottom}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} clear-screen [port (current-output-port)]
|
||||||
|
|
||||||
|
Clear the scrolling region of @var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} move-cursor y x [port (current-output-port)]
|
||||||
|
|
||||||
|
Move the cursor of @var{port} to row @var{y} and column @var{x}. Note
|
||||||
|
that these values are 1-based, so the top left corner is at the
|
||||||
|
coordinates @samp{1,1}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} scroll-up [amount 1] [port (current-output-port)]
|
||||||
|
|
||||||
|
Scroll @var{port} up by @var{amount} rows.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} scroll-down [amount 1] [port (current-output-port)]
|
||||||
|
|
||||||
|
Scroll @var{port} down by @var{amount} rows.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} cursor-up [distance 1] [port (current-output-port)]
|
||||||
|
|
||||||
|
Move the cursor of @var{port} up @var{distance} rows.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} cursor-down [distance 1] [port (current-output-port)]
|
||||||
|
|
||||||
|
Move the cursor of @var{port} down @var{distance} rows.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} cursor-forward [distance 1] [port (current-output-port)]
|
||||||
|
|
||||||
|
Move the cursor of @var{port} forward @var{distance} columns.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} cursor-back [distance 1] [port (current-output-port)]
|
||||||
|
|
||||||
|
Move the cursor of @var{port} backwards @var{distance} columns.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} cursor-next-line [distance 1] [port (current-output-port)]
|
||||||
|
|
||||||
|
Move the cursor of @var{port} up @var{distance} rows and place it at
|
||||||
|
the beginning of the line.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} cursor-prev-line [distance 1] [port (current-output-port)]
|
||||||
|
|
||||||
|
Move the cursor of @var{port} down @var{distance} rows and place it at
|
||||||
|
the beginning of the line.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} clear-line [port (current-output-port)]
|
||||||
|
|
||||||
|
Clear the current line of @var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} clear-line-left [port (current-output-port)]
|
||||||
|
|
||||||
|
Clear the current line of @var{port} left of its cursor.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} clear-line-right [port (current-output-port)]
|
||||||
|
|
||||||
|
Clear the current line of @var{port} right of its cursor.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} clear-lines n [port (current-output-port)]
|
||||||
|
|
||||||
|
Clear @var{n} lines of @var{port}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} insert-lines n [port (current-output-port)]
|
||||||
|
|
||||||
|
Insert @var{n} blank rows at the top of the scrolling region of
|
||||||
|
@var{port}, pushing lower rows down.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} delete-lines n [port (current-output-port)]
|
||||||
|
|
||||||
|
Delete @var{n} rows at the top of the scrolling region of @var{port},
|
||||||
|
pulling any rows below up.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} set-window-title title [port (current-output-port)]
|
||||||
|
|
||||||
|
Set the window title of @var{port} to @var{title}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@node Style
|
||||||
|
@section Style
|
||||||
|
|
||||||
|
The @code{(termenv style)} module provides procedures for manipulating
|
||||||
|
the style and color (@pxref{Color}) of text.
|
||||||
|
|
||||||
|
@deffn {Procedure} foreground c s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes representing the string or
|
||||||
|
strings @var{s} with the foreground color indicated by the hexcode
|
||||||
|
@var{c}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} background c s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes representing the string or
|
||||||
|
strings @var{s} with the background color indicated by the hexcode
|
||||||
|
@var{c}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} bold s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes to render the string or
|
||||||
|
strings @var{s} in boldface.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} faint s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes to render the string or
|
||||||
|
strings @var{s} faintly.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} italic s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes to italicize the string or
|
||||||
|
strings @var{s}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} underline s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes to underline the string or
|
||||||
|
strings @var{s}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} overline s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes to overline the string or
|
||||||
|
strings @var{s}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} blink s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes to render the string or
|
||||||
|
strings @var{s} blinking.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} invert s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes to reverse the string or
|
||||||
|
strings @var{s}.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Procedure} cross-out s @dots{}
|
||||||
|
|
||||||
|
Return a string of terminal control codes to cross out the string or
|
||||||
|
strings @var{s} in boldface.
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@node Unix
|
||||||
|
@section Unix
|
||||||
|
|
||||||
|
The @code{(termenv unix)} module provides a single procedure for
|
||||||
|
determining the color and control code support of a terminal.
|
||||||
|
|
||||||
|
@deffn {Procedure} color-profile port
|
||||||
|
|
||||||
|
Test the characteristics of the terminal indicated by @code{port} and
|
||||||
|
return a symbol indicating its highest-bit color profile. Returns one
|
||||||
|
of:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
@var{true-color}: Port supports 24-bit ``true color'' representing
|
||||||
|
about 16 million colors.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@var{ansi256}: Port supports a 256-color palette consisting of 216
|
||||||
|
colors, 16 ANSI colors, and 24 shades of gray. Color values are
|
||||||
|
24-bit.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@var{ansi}: Port supports 16 colors, bold, italics, and background
|
||||||
|
coloration.
|
||||||
|
|
||||||
|
@item
|
||||||
|
@var{ascii}: Port does not support colors or styles. In practice, this
|
||||||
|
means the output port is not a terminal.
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@node Index
|
||||||
|
@unnumbered Index
|
||||||
|
|
||||||
|
@printindex fn
|
||||||
|
|
||||||
@bye
|
@bye
|
||||||
|
|
Loading…
Reference in a new issue