在Lisp/Emacs中打印彩色字符

Lim*_*och 5 lisp emacs

我在Lisp中编写一个简单的connect-4程序,理想情况下,每个玩家(红色,黑色)在显示游戏状态时都会有自己的颜色.有谁知道如何打印彩色ASCII字符?这一般是怎么做的?我正在使用emacs 23,因此解决方案可能特定于emacs本身.

无论如何,我已经检查了hyperspec,看看FORMAT是否可以做到但到目前为止还没有运气.提前致谢.

hua*_*uan 6

Emacs中文本的外观由控制.可以通过叠加文本属性更改.以下是使用后者的示例:

;; Emacs-Lisp
(insert (propertize "foo" 'font-lock-face '(:foreground "red")))

但是,如果游戏是在SBCL中实现的,那么您需要一种与SBCL程序中的Emacs通信的方法.因为看起来你正在使用Slime,使用Swank(它是Slime的一部分)可能是最方便的:

;; Common-Lisp
(swank::eval-in-emacs
 '(with-current-buffer (slime-repl-buffer)
    (insert (propertize "foo" 'font-lock-face '(:foreground "red")))))


Mar*_*sch 4

无耻的自插:您可能想尝试一下,它是在 Web 浏览器中运行的 Common Lisp 的图形终端。它使用 html 来打印内容,所以你可以这样做:

(gtfl-out (:p :style "color:red;" "some characters"))
Run Code Online (Sandbox Code Playgroud)