gccの出力をカラーにする

といってもすごいことをやってるわけじゃない
sedするだけ。


標準入力とエラー出力を分けるためにわざわざfifo作ってるけど別に混ざっていいなら"2>&1"だけでおっけー

-rwxr--r-- 1 500 500 306 2008-01-22 20:34 g++

#!/usr/bin/env bash

TMP=`mktemp g++.XXXXXX`
rm -f $TMP
mkfifo $TMP

cat $TMP | \
	sed -e "s/^.*エラー:.*$/^[[31m\0^[[0m/g" | \
	sed -e "s/^.*警告:.*$/^[[32m\0^[[0m/g" | \
	sed -e "s/^.*error:.*$/^[[31m\0^[[0m/g" | \
	sed -e "s/^.*warning:.*$/^[[32m\0^[[0m/g" 1>&2 &

/usr/local/bin/g++ $@ 2>$TMP

rm -f $TMP

"/usr/local/bin"は適当に変えなすって。
途中にある"^["はエスケープ文字ですじゃ。
vimでの簡単な入力方法は

:.!echo -e "\033"

で現在行がエスケープ文字に変わるので適当にヤンクしてプット。

gccに関しても適当に。
あとはこれらをPATHの通ってるとことで優先度の高いところへ置いておけばよし。

やってることは地味だけど、地味は地味なりにそこそこ便利。
warningが緑で、errorが赤。気に入らなければ31とか32をかえてちょ。

#追記2008-01-27
#これやるとvimでの:makeで不具合が...
#う〜ん。なにか手はないものか...