Подтвердить что ты не робот

Раскраска ANSI в режиме компиляции

Кто-нибудь добавил поддержку ansi-color в Emacs в режиме компиляции? Если да, то какое свойство/атрибут выполняет программа цветной записи, чтобы убедиться, что ее активный терминал поддерживает раскраску ANSI-escape.

4b9b3361

Ответ 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.

Ответ 2

Мое оптимизированное решение, которое не загрязняет 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))