I was working on the terminal output for a Common Lisp logger, and I realized that SLIME does not interpret ANSI escape sequences.
This is not the end of the world, but having at least colors would be nice. Fortunately there is a library to do just that.
First let us install the package, here using
(use-package slime-repl-ansi-color :straight t)
While in theory we are supposed to just add
slime-contribs, it did not work for me, and I add to enable the minor mode
If you already have a SLIME REPL hook, simply add
(slime-repl-ansi-color-mode 1). If not, write an initialization function, and add it to the SLIME REPL
(defun g-init-slime-repl-mode () (slime-repl-ansi-color-mode 1)) (add-hook 'slime-repl-mode-hook 'g-init-slime-repl-mode)
To test that it works as intended, fire up SLIME and print a simple message using ANSI escape sequences:
(let ((escape (code-char 27))) (format t "~C[1;33mHello world!~C[0m~%" escape escape))
While it is tempting to use the
#\Esc character, it is part of the Common
Lisp standard; therefore we use
CODE-CHAR to obtain it from its ASCII
numeric value. We use two escape sequences, the first one to set the bold flag
and foreground color, and the second one to reset display status.
If everything works well, should you see a nice bold yellow message: