~mna/zzcsi

Control Sequence Introducer (CSI) functions for xterm-compatible terminals.
add decode args, test, benchmark, example
rename builds
rename to zzcsi

clone

read-only
https://git.sr.ht/~mna/zzcsi
read/write
git@git.sr.ht:~mna/zzcsi

You can also use your local clone with git send-email.

zzcsi

Package zzcsi implements the Control Sequence Introducer (CSI) functions supported by Xterm-compatible terminals. The most commonly used functions are to erase a line or the screen, manipulate the cursor or set the display attributes such as foreground and background colors, bold or italics, but many more functions are available. See the xterm documentation for more information on CSI sequences.

See the package documentation for details, API reference and usage example (alternatively, on pkg.go.dev).

This is a package in the zzterm family of Go packages, which aim to help build terminal-based programs with a focus on speed and memory efficiency.

Benchmarks

When using a buffer of sufficient capacity, CSI.AppendFunc can append the CSI escape sequence without allocation.

benchmark                       iter      time/iter   bytes alloc        allocs
---------                       ----      ---------   -----------        ------
BenchmarkCSI/Func-4          9971707   116.00 ns/op       24 B/op   2 allocs/op
BenchmarkCSI/FuncString-4    8935776   135.00 ns/op       32 B/op   3 allocs/op
BenchmarkCSI/AppendFunc-4   20534767    58.80 ns/op        0 B/op   0 allocs/op
BenchmarkCSI/DecodeArgs-4   20537282    55.00 ns/op        0 B/op   0 allocs/op

License

The BSD 3-Clause license.