cl-ansi-text

https://github.com/pnathan/cl-ansi-text.git

git clone 'https://github.com/pnathan/cl-ansi-text.git'

(ql:quickload :cl-ansi-text)
10

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: lisp * (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: lisp * (let (cl-ansi-text:*enabled*) (princ (red "This string is printed normally")))

API

BLUE

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

enabled dynamically controls the function.

MAGENTA

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

enabled dynamically controls the function.

CYAN

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

enabled dynamically controls the function.

GREEN

Returns a string with the green'string denotation preppended and thereset' 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 thereset' string denotation appended.

enabled dynamically controls the function.

BLACK

Returns a string with the black'string denotation preppended and thereset' 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 thereset' string denotation appended.

enabled dynamically controls the function.

WHITE

Returns a string with the white'string denotation preppended and thereset' 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