我正在 emacs 中运行一个进程,该进程在其输出中使用 ANSI 颜色代码。
我正在start-process用来创建进程,并为进程的输出提供了一个自定义缓冲区名称
(start-process "foo" "*Foo*" foo-command foo-args)
Run Code Online (Sandbox Code Playgroud)
如果我打开*Foo*缓冲区,ANSI 颜色代码以其原始格式打印到缓冲区
^[[36msome output message^[[m
^[[1;35msome output message^[[m
^[[1;34msome output message^[[m
Run Code Online (Sandbox Code Playgroud)
我在这个 SO answer 中看到可以向缓冲区添加着色;但是我不确定如何使用创建的缓冲区来做到这一点start-process
是否可以将这些 ANSI 颜色代码转换为*Foo*缓冲区中的彩色输出?
链接的答案似乎没有任何不涉及的解决方案comint-mode。您可以使用ansi-color-apply-on-region对输出缓冲区进行着色,例如。
(set-process-sentinel
(start-process "foo" "*Foo*" foo-command foo-args)
(lambda (p _m)
(when (eq 0 (process-exit-status p))
(with-current-buffer (process-buffer p)
(ansi-color-apply-on-region (point-min) (point-max))))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |