黄瓜';s ANSI颜色弄乱了emacs编译缓冲区
在Emacs中工作时,我使用compile命令(默认情况下为F12)运行程序。当我在Emacs中运行Cucumber时,Cucumber会吐出Emacs编译模式无法解释的ANSI颜色。结果很难看,也很难理解。以下是*编译*缓冲区的一个片段,显示了以下问题:黄瓜';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 黄瓜
^[[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模式
,但我必须弄清楚。