コンパイルモードのEmacsでansi-colorのサポートを追加した人はいますか?そうであれば、アクティブな端末がANSIエスケープカラーリングをサポートしていることを確認するために、カラーライティングプログラムがチェックする必要があるプロパティ/属性は何ですか?ANSIコンパイルモードでの色付け
答えて
すでに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
変数を設定することでオーバーライドできます。
完全には動作しないようです。私は 'grep --color'でテストしました。 Emacsは常にANSIの制御シーケンスを無効にするとは限りません。( –
@Nordlöw、この問題を修正してポストを更新しました。バッファ全体を色づけしようとしましたが、新しいバージョンははるかに堅牢で高速ですが、エスケープシーケンスの途中でプロセスが出力をカットしないことは保証されていないので、混乱する可能性があります。 – ivg
ありがとうございました。 –
(のみM-x compile
用)M-x grep
を汚染していない私の最適化されたソリューション:
(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))
[キュウリのANSIの色はEmacsのコンパイルバッファをめちゃくちゃ]の可能複製(http://stackoverflow.com/questions/3072648/cucumbers-ansi-colour-messing-up-emacs-compilation-buffer) – legoscia