gitwebでsyntax highlightを試みる
gitをソースからinstallすると、repositoryをブラウザから見るためのgitweb.cgiがついてくる。ちょっとブラウザから見たいときにはwebrickでhttpサーバを立ちあげれば、localでも見ることができるし、git repository が置いてあるサーバに置いておくと、ブラウザさえあればどこからでもソースや履歴が閲覧できて、とても便利。ただ、ちょっと不満なのが syntax highlight されていない点。検索してみても、 "gitでsyntax highlightできないの?"と聞く mailing list とかばかりヒットして、どうすればいいのか分からなかった。また、日本語の情報も見つけられなかった。ただ、 mailing list の log を見ていくと、どうやら本家には merge された様子。調べた結果、すでに syntax highlight の機能は gitweb.cgi に取り込まれているようだった。今回は serversman@vps 上に置いた gitweb に syntax highlight を有効化させてみたのでそのメモを書いておく。
gitweb.cgiそのものについては、
Pro git
や gitweb/README や gitweb/INSTALL を参考。
gitwebとhighlight
git-dir $ grep highlight gitweb/README
してみると、何やら
* HIGHLIGHT_BIN
Path to the highlight executable to use (must be the one from
http://www.andre-simon.de due to assumptions about parameters and output).
Useful if highlight is not installed on your webserver's PATH.
[Default: highlight]
と引っかかる。
http://www.andre-simon.de
から syntax highlight してくれる highlight が手に入るようだ。ちなみに、ほとんどの distro にはパッケージがあるようなので、 local(ubuntu) にも入れておいた。xhtml, terminal, latex などいろいろな出力形式に対応していて便利そう。
install highlight
serversman 上で作業する。
$ tar xvzf highlight-3.4.tar.gz
$ cd highlight-3.4
$ less INSTALL
$ less README
としたあと、
$ make
すると、エラーがたくさん出る。結論から言うと、c++、boost(c++ libraries)、luaがない。
c++とboostは
$ sudo yum install gcc-c++
$ sudo yum install boost-devel
でinstall。
次にluaをinstall。lua 5.1をダウンロードして、
$ tar xvzf lua-5.1.4.tar.gz
$ cd lua-5.1.4
$ make
ここで、-lnucursesで、エラー。
$ sudo yum install ncurses-devel
$ make
$ sudo make install
これでhighlightをbuildする準備が整った。
$ cd highlight-3.4
$ make cli
$ sudo make install
これで、OK。あとは gitweb の設定のみ。
gitwebの設定
gitweb.cgiをhighlightで検索すると、defaultでは有効されていないと、と分かる。highlight へのPATH が通っていることを確認し、gitweb_config の projectroot の指定よりも前に、
$feature{'highlight'}{'default'} =[1];
と書く。 default で highlight を適用させる suffix が gitweb.cgi で指定されているので、そこにいくつかルールを追加する。ここまで来れば、
適用前
適用後
となる。満足。
色を変更したければ、 static/gitweb.css の一番最後にある hightlight の色指定を変更する。あるいは、コマンドラインから
$ highlight -s emacs hoge.rb > hoge.htlm
などとしたときに、一緒に出てくる highlight.css を参考に設定すればよい。スタイル一覧は作者の web site から見ることができる。
ちなみに
他の環境にhighlightの2.X系を入れてみたところ、 lua がないけど install できた。2.X系の方が楽だったかもしれない。