首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黄瓜的ANSI颜色混淆了emacs编译缓冲区

黄瓜的ANSI颜色混淆了emacs编译缓冲区
EN

Stack Overflow用户
提问于 2010-06-18 19:51:49
回答 3查看 6.1K关注 0票数 44

在Emacs中工作时,我使用编译命令(默认情况下是F12)来运行程序。当我在Emacs中运行Cucumber时,Cucumber会发出Emacs编译模式无法解释的ANSI颜色。结果很难看,很难读懂。下面是显示丑陋的*编译*缓冲区的片段:

代码语言:javascript
复制
^[[31m(::) failed steps (::)^[[0m

我使用的命令:

代码语言:javascript
复制
( cd ~/lab/rails/todolist && rake cucumber:all )

版本:

  • Emacs 23.1
  • 黄瓜0.8.3
  • 黄瓜-rails 0.3.2

如果我可以的话,世界将是阳光和鸟儿在歌唱:

  • 让Emacs在其编译缓冲区中解释ANSI颜色代码,或
  • 让黄瓜停止吐出ANSI颜色代码

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-18 20:25:57

我使用它来打开编译缓冲区中的ansi颜色解释:

代码语言:javascript
复制
(require 'ansi-color)
(defun colorize-compilation-buffer ()
  (let ((inhibit-read-only t))
    (ansi-color-apply-on-region (point-min) (point-max))))
(add-hook 'compilation-filter-hook 'colorize-compilation-buffer)
票数 75
EN

Stack Overflow用户

发布于 2013-12-26 17:22:42

我改进了代码,这样它就不会像命令那样污染M-x grep,而且效率更高:

代码语言:javascript
复制
(ignore-errors
  (require 'ansi-color)
  (defun my-colorize-compilation-buffer ()
    (when (eq major-mode 'compilation-mode)
      (ansi-color-apply-on-region compilation-filter-start (point-max))))
  (add-hook 'compilation-filter-hook 'my-colorize-compilation-buffer))
票数 22
EN

Stack Overflow用户

发布于 2020-09-02 17:14:46

到2022年,最现代的方式似乎是xterm-color Emacs软件包。

  1. 使用M-x package-install执行xterm-color
  2. 将下列行添加到~/.emacs~/.emacs.d/init.el
代码语言:javascript
复制
(require 'xterm-color)
(setq compilation-environment '("TERM=xterm-256color"))
(defun my/advice-compilation-filter (f proc string)
  (funcall f proc (xterm-color-filter string)))
(advice-add 'compilation-filter :around #'my/advice-compilation-filter)

(见颜色文档.)

请注意,如果xterm-color没有正确安装,这将提供错误消息。这是强烈建议,因为在一个不完整的Emacs安装,它将清楚地向你解释什么是错误的,而不是让你不知道为什么颜色不工作。

但是,如果您真的更愿意在缺少时不通知,请使用以下命令:

代码语言:javascript
复制
(when (require 'ansi-color nil t)
  (setq compilation-environment '("TERM=xterm-256color"))
  (defun my/advice-compilation-filter (f proc string)
    (funcall f proc (xterm-color-filter string)))
  (advice-add 'compilation-filter :around #'my/advice-compilation-filter))
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3072648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档