我设置了我的 emacs,以便 shell 缓冲区中的颜色工作得很好。我还使用 compile 命令在我的 ruby on rails 环境中运行单个测试文件但是当我这样做时,ror 测试功能会将大量 shell/终端转义字符放入我的编译缓冲区。有没有办法让这些东西以终端颜色显示?
顺便说一句:我四处搜索并尝试了一些东西,但它们没有用。
谢谢!
我设置了我的 emacs,以便 shell 缓冲区中的颜色工作得很好。我还使用 compile 命令在我的 ruby on rails 环境中运行单个测试文件但是当我这样做时,ror 测试功能会将大量 shell/终端转义字符放入我的编译缓冲区。有没有办法让这些东西以终端颜色显示?
顺便说一句:我四处搜索并尝试了一些东西,但它们没有用。
谢谢!
这是我现在的 .emacs 文件中的内容。它直到最后都不起作用,但没关系。
;; This stuff is to ansi-colorize the compilation buffer after a rails test so the terminal colors come through.
(define-derived-mode ansi-compilation-mode compilation-mode "ansi compilation"
"Compilation mode that understands ansi colors."
(require 'ansi-color)
(toggle-read-only 0)
(ansi-color-apply-on-region (point-min) (point-max)))
(defun colorize-compilation (one two)
"ansi colorize the compilation buffer."
(ansi-compilation-mode))
(setq compilation-finish-function 'colorize-compilation)
编辑
我已经从使用编译模式切换到使用异步 shell 命令。这是代码:
(defun run-it ()
"Run it on the current file."
(interactive)
(save-buffer)
(shell-command
(format "my_command %s &"
(shell-quote-argument (buffer-name)))))
(global-set-key "\C-ct" 'run-it)
它首先保存缓冲区。这&
使它实际上具有交互性,因此我可以在缓冲区中输入文本,命令将获得该输入。它会即时为命令输出着色,而我的编译缓冲区没有这样做。
支持 Alex Vorobiev 的评论,该评论提供了答案。
似乎您已经将 comint-mode 放在一边,并使用了 ansi-color-process-output 过滤器。
AFAIU 字体化是在每个缓冲区基础上完成的,从空闲计时器运行。由缓冲区更改触发。如果在输出 shell 中启用,Emacs 可能会挂起,因为很多更改可能会在短时间内发生。因此字体化通常在这里关闭。另一种方法:在 shell 缓冲区中 Mx MY-MODE。这可能需要对 shell 环境进行一些重置或重新启动。