YOLK --- ansi escapes for CHICKEN -*- text -*-
yes there's already ansi-escape-sequences[1]. consider this NIH ;) this library
is based on the information a gist by fnky[2]. at some point i should base it
instead on xterm's manual[3].
Unless otherwise stated, all procedures and variables in this library are
strings or return strings ready for `display'.
INSTALLATION.
Run `chicken-install' in this directory or `make install', which will run it for
you. You can also run `make clean' to clean the folder of build artifacts.
MODULES.
(yolk common) --- common functionality
Procedures.
- (esc . xs)
Return a string consisting of XS, converted to strings, prepended by ESC.
- (csi . xs)
Convenience function to escape XS using the csi code (ESC "[").
- (dcs . xs)
Convenience function to escape XS using the dcs code (ESC "P").
- (ocs . xs)
Convenience function to escape XS using the ocs code (ESC "]").
- (parameter-assert predicate error-message)
Convenience function. Returns a function that runs PREDICATE on its argument and
returns the argument if PREDICATE passes, or errors if not. I use this for
parameters.
Syntax.
- (define-esc-alt-wrapper wrapper-proc-name param-name (default-proc args ...))
Many terminal behaviors have multiple escape sequences that might work. This
macro defines a parameter named PARAM-NAME and a procedure named
WRAPPER-PROC-NAME that will call PARAM-NAME with ARGS ... . The user can change
which procedure to call by calling (PARAM-NAME new-proc).
(yolk attrs) --- text attributes
-- (prop? x)
Returns X if X is a text property (non-color); otherwise returns #f.
-- (color? x)
Returns X if X is a terminal color name; otherwise returns #f.
-- (attrs as)
AS is a list of attributes, each of one of the following forms:
- [number] -- returned directly
- [color], (fg [color]), (fg . [color]) -- set the foreground to [color]
- (bg [color]), (bg . [color]) -- set the background to [color]
- [property], (set [property]), (set . [property]) -- turn [property] on
- (reset [property]), (reset . [property]) -- turn [property] off
- 'reset -- reset the text attributes
Anything else is an error. `attrs' returns a string ready to be displayed on the terminal.
-- (with-attrs as str)
Print STR prepended with AS and followed by (attrs 'reset).
(yolk cursor) --- cursor movement
Variables.
-- cursor-home
Move the cursor to the top-left corner (0,0). NOTE: This and the move commands
might be revised later.
Procedures.
-- (cursor-move x y)
Move cursor to X, Y, counting from the top-left corner of the screen.
cursor-move is an esc-alt-wrapper that defaults to cursor-move/H ("^[[Y;XH").
-- (cursor-up n)
-- (cursor-down n)
-- (cursor-right n)
-- (cursor-left n)
Move cursor up, down, left, or right by N spaces.
-- (cursor-up-bol n)
-- (cursor-down-bol n)
Move cursor up or down by N lines, to the beginning of the given line.
-- (cursor-move-column n)
Move cursor to column N.
-- (cursor-save)
-- (cursor-restore)
Save or restore the cursor's position on the screen. These variables are
parameters defaulting to the DEC escapes. You can set them to the SCO escapes
using (cursor-save cursor-save/sco), for example.
(yolk erase) --- erasing the screen
Variables.
-- erase-screen-down
-- erase-screen-up
-- erase-screen
-- erase-saved-lines
These erase portions of the entire screen.
-- erase-line-right
-- erase-line-left
-- erase-line
These erase portions of the current line.
-- erase-line-and-return
Convenience function to return the cursor to the beginning of the line after
erasing it.
(yolk xterm) --- xterm-specific escape sequences
Variables.
-- invisible-cursor
-- visible-cursor
Make the cursor invisible or visible.
-- save-screen
-- restore-screen
Save or restore the screen's state.
-- alt-buffer-enable
-- alt-buffer-disable
Enable or disable the "alternate buffer."
REFERENCES.
[1]: http://wiki.call-cc.org/eggref/5/ansi-escape-sequences
[2]: https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
[3]: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
- https://xn--rpa.cc/irl/term.html
- (man "console_codes")