有任何人添加为编辑模式的Emacs ANSI色支持? 如果是的话是什么属性/属性做颜色写程序有为了确保检查其活动的终端支持ANSI转义着色。
Answer 1:
还有已经将彩色电视到COMINT缓冲器的功能。 你只需要启用它在编译缓冲区:
(require 'ansi-color)
(defun colorize-compilation-buffer ()
(toggle-read-only)
(ansi-color-apply-on-region compilation-filter-start (point))
(toggle-read-only))
(add-hook 'compilation-filter-hook 'colorize-compilation-buffer)
颜色写程序应该检查TERM
环境变量和terminfo数据库来检查终端支持的颜色。 在实践中,很多程序忽略了这一点,并依靠用户设置。 Emacs会汇编终端类型设置为dumb
默认但是这可以通过设置将覆盖compilation-environment
变量。
更新 :请注意,在Emacs 24.5两次调用(toggle-read-only)
在上面的代码是不需要的。
Answer 2:
我的优化的解决方案,其不污染Mx grep
(仅适用于Mx compile
):
(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))
Answer 3:
Riffing上@ gavenkoa的解决方案 :
(when (require 'ansi-color nil t)
(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))
这不会阻止错误,但如果ANSI色不可用仍不会引发错误。 就个人而言,我发现的通配符捕捉语义ignore-error
反感。
文章来源: ANSI Coloring in Compilation Mode