Nor*_*löw 35 emacs shell ansi-escape text-coloring compilationmode
有没有人在编译模式Emacs中添加对ansi-color的支持?如果是这样,颜色编写程序必须检查哪个属性/属性,以确保其活动终端支持ANSI-escape着色.
ata*_*lor 56
已经有一个将颜色应用于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)
Run Code Online (Sandbox Code Playgroud)
颜色编写程序应检查TERM环境变量和terminfo数据库以检查终端是否支持颜色.在实践中,许多程序忽略了这一点,并依赖于用户设置.dumb默认情况下,Emacs会将编译终端类型设置为,但可以通过设置compilation-environment变量来覆盖它.
gav*_*koa 29
我的优化解决方案,不污染M-x grep(仅适用于M-x 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))
Run Code Online (Sandbox Code Playgroud)
小智 15
从 emacs 28.1 开始,它现在是内置的 !
(require 'ansi-color)
(add-hook 'compilation-filter-hook 'ansi-color-compilation-filter)
Run Code Online (Sandbox Code Playgroud)
或者使用 use-package
(use-package ansi-color
:hook (compilation-filter . ansi-color-compilation-filter))
Run Code Online (Sandbox Code Playgroud)
重复@stribb的解决方案,重复@gavenkoa的解决方案,这是如何使用很棒的使用包来设置它:
(use-package ansi-color
:config
(defun my-colorize-compilation-buffer ()
(when (eq major-mode 'compilation-mode)
(ansi-color-apply-on-region compilation-filter-start (point-max))))
:hook (compilation-filter . my-colorize-compilation-buffer))
Run Code Online (Sandbox Code Playgroud)
小智 7
嘲笑@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))
Run Code Online (Sandbox Code Playgroud)
这不会阻止错误,但如果 ansi-color 不可用,仍然不会引发错误。就个人而言,我发现通配符捕获语义ignore-error令人反感。
| 归档时间: |
|
| 查看次数: |
4518 次 |
| 最近记录: |