黄瓜';s ANSI颜色弄乱了emacs编译缓冲区

黄瓜';s ANSI颜色弄乱了emacs编译缓冲区,emacs,cucumber,Emacs,Cucumber,在Emacs中工作时,我使用compile命令(默认情况下为F12)运行程序。当我在Emacs中运行Cucumber时,Cucumber会吐出Emacs编译模式无法解释的ANSI颜色。结果很难看,也很难理解。以下是*编译*缓冲区的一个片段,显示了以下问题: ^[[31m(::) failed steps (::)^[[0m 我正在使用的命令: ( cd ~/lab/rails/todolist && rake cucumber:all ) 版本: Emacs 23.1 黄瓜

在Emacs中工作时,我使用compile命令(默认情况下为F12)运行程序。当我在Emacs中运行Cucumber时,Cucumber会吐出Emacs编译模式无法解释的ANSI颜色。结果很难看,也很难理解。以下是*编译*缓冲区的一个片段,显示了以下问题:

^[[31m(::) failed steps (::)^[[0m
我正在使用的命令:

( cd ~/lab/rails/todolist && rake cucumber:all )
版本:

  • Emacs 23.1
  • 黄瓜0.8.3
  • 黄瓜轨道0.3.2
如果我可以,世界将是阳光和鸟儿歌唱:

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

有什么想法吗?

我使用此选项在编译缓冲区中打开ansi颜色解释:

(需要“ansi颜色”)
(defun colorize编译缓冲区()
(let((禁止只读t))
(ansi颜色应用于区域(最小点)(最大点)))
(添加钩子“编译过滤器钩子”着色编译缓冲区)

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

(忽略错误
(需要“ansi颜色”)
(取消我的彩色编译缓冲区()
(何时(eq主模式“编译模式”)
(ansi颜色应用于区域编译过滤器开始(最大点)))
(添加钩子“编译过滤器钩子”我的彩色编译缓冲区)

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

  • 使用
    xterm color
    执行
    M-x软件包安装

  • 将以下行添加到
    ~/.emacs
    ~/.emacs.d/init.el

  • (需要“xterm颜色”)
    (setq编译环境“(“TERM=xterm-256color”))
    (定义我的/建议编译筛选器(f proc字符串)
    (funcall f proc(xterm颜色过滤器字符串)))
    (建议添加“编译过滤器:关于#”我的建议/建议编译过滤器)
    
    (见附件。)

    请注意,如果未正确安装
    xterm color
    ,这将提供错误消息。强烈建议您这样做,因为在不完整的Emacs安装中,它会清楚地向您解释问题所在,而不会让您疑惑为什么颜色不起作用

    但是,如果您确实希望不被通知如果
    xterm color
    丢失,请改用:

    (当(要求“ansi颜色为零”时)
    (setq编译环境“(“TERM=xterm-256color”))
    (定义我的/建议编译筛选器(f proc字符串)
    (funcall f proc(xterm颜色过滤器字符串)))
    (建议添加‘编译过滤器:关于#’我的建议/建议编译过滤器))
    
    正是我想要的!不幸的是,在我的环境(cygwin xemacs)中,它以“进程过滤器中的错误”的形式打开(缓冲区只读),这似乎很奇怪。有什么想法吗?这对我也很有用。在
    (切换只读)
    之后,我还添加了
    (linum模式0)
    (第一次尝试
    (行号模式0)
    ,它不起作用,但我还是离开了,可能会为其他人工作),这让我更加高兴(一堆刚刚包装好的行都不起作用).我决定给我的makefiles输出添加一些颜色,并在emacs中解决了这个问题。伟大的解决方案!对于现代的Emacsen,应该让bind
    禁止只读
    t
    ,而不是调用
    toggle read only
    。在添加新文本的同时,有什么方法可以使这项工作正常吗?我在
    ack
    的结果上测试了这一点,但钩子似乎是在内容填充缓冲区之前运行的,因此内容没有被解释。请注意,我仅使用Emacs 24.x测试此代码,它可能在23.x或更低版本中不起作用……这很好,为什么
    (为comint模式添加钩子“编译过滤器钩子”ansi颜色)
    不行?这对我的pytest编译命令的着色效果很好,但打破了我的ag模式-它失去了交互性并减慢了速度。@simno我建议提交一份错误报告:已经有一个用于
    rg.el
    ag.el
    包的错误报告:。这两个包都依赖于匹配的终端颜色转义,并且不提供忽略高亮显示的选项。我会关闭
    my/advice编译过滤器
    ,特别是
    ag模式
    ,但我必须弄清楚。