46

コンパイルモードの Emacs に ansi-color のサポートを追加した人はいますか? その場合、アクティブな端末が ANSI エスケープ カラーリングをサポートしていることを確認するために、カラー書き込みプログラムはどのプロパティ/属性をチェックする必要がありますか。

4

5 に答える 5

71

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)上記のコードの への 2 つの呼び出しは不要であることに注意してください。

于 2012-11-15T23:23:58.430 に答える
34

汚染しない私の最適化されたソリューション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))
于 2013-12-26T17:19:31.893 に答える