Skip to content
Enables ANSI colors for printing.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test Add CCL to the CI system. Jul 18, 2015
.travis.yml
README.md
ci-test-run.sh
cl-ansi-text-test.asd Add tests to the system. Feb 26, 2013
cl-ansi-text.asd Review from H4ns and port to CCL. Feb 12, 2013
cl-ansi-text.lisp
run-tests.lisp Add CCL to the CI system. Jul 18, 2015

README.md

cl-ansi-text

Because color in your terminal is nice. Build Status

Usage example -

* (ql:quickload :cl-ansi-text)
;To load "cl-ansi-text":
;  Load 1 ASDF system:
;    cl-ansi-text
;; Loading "cl-ansi-text"
; => (:CL-ANSI-TEXT)

The main macro is called with-color, which creates an enviroment where everything that is put on stream gets colored according to color. Color options are :black, :red, :green, :yellow, :blue, :magenta, :cyan and :white. You can also use a color structure from CL-COLORS, like cl-colors:+red+.

* (import 'cl-ansi-text:with-color)
; => T
* (with-color (:red)
    (princ "Gets printed red...")
    (princ "and this too!"))
; Gets printed red...and this too!
; => "and this too!"

There are also functions with the name of the colors, that return the string, colored:

* (import 'cl-ansi-text:yellow)
; => T
* (yellow "Yellow string")
; => "Yellow string"
* (princ (yellow "String with yellow background" :style :background))
; "String with yellow background"
; => "String with yellow background"
* (import 'cl-ansi-text:red)
; => T
* (princ
   (concatenate
    'string
    (yellow "Five") " test results went " (red "terribly wrong") "!"))
; Five test results went terribly wrong!
; => "Five test results went terribly wrong!"

At any point, you can bind the *enabled* special variable to nil, and anything inside that binding will not be printed colorfully:

* (let (cl-ansi-text:*enabled*)
    (princ (red "This string is printed normally")))

API

BLUE

Returns a string with the blue'string denotation preppended and the reset' string denotation appended.

enabled dynamically controls the function.

MAGENTA

Returns a string with the magenta'string denotation preppended and the reset' string denotation appended.

enabled dynamically controls the function.

CYAN

Returns a string with the cyan'string denotation preppended and the reset' string denotation appended.

enabled dynamically controls the function.

GREEN

Returns a string with the green'string denotation preppended and the reset' string denotation appended.

enabled dynamically controls the function.

WITH-COLOR

Writes out the string denoting a switch to color, executes body, then writes out the string denoting a reset.

enabled dynamically controls expansion..

YELLOW

Returns a string with the yellow'string denotation preppended and the reset' string denotation appended.

enabled dynamically controls the function.

BLACK

Returns a string with the black'string denotation preppended and the reset' string denotation appended.

enabled dynamically controls the function.

ENABLED

Turns on/off the colorization of functions

MAKE-COLOR-STRING

Takes either a cl-color or a list denoting the ANSI colors and returns a string sufficient to change to the given color.

Will be dynamically controlled by enabled unless manually specified otherwise

RED

Returns a string with the red'string denotation preppended and the reset' string denotation appended.

enabled dynamically controls the function.

WHITE

Returns a string with the white'string denotation preppended and the reset' string denotation appended.

enabled dynamically controls the function.

+RESET-COLOR-STRING+

This string will reset ANSI colors

Note

Note that your terminal MUST be ANSI-compliant to show these colors. My SLIME REPL (as of Feb 2013) does not display these colors. I have to use a typical Linux/OSX terminal to see them.

This has been tested to work on a Linux system with SBCL, CLISP and CCL. CCL may not work quite perfectly, some level of conniptions were encountered in testing. The interested reader is advised to check the MAKE-LOAD-FORM defmethod in cl-ansi-text.lisp.

An earlier variant was tested on OSX 10.6 with SBCL.

License: LLGPL

You can’t perform that action at this time.