Tracのシンタックスハイライト
Tracがどうやってシンタックスハイライトしてるか気になったので調べた。
以下の手順でMIMEタイプを判定。
- ファイルの拡張子から判定
- mimetypesモジュールで判定
- ファイル内容のshebang行、Emacsの-*- mode -*-、vimのsyntax=
を正規表現で判定 - ファイル内容からバイナリ判定
- 最後までマッチしなかったらNoneを返す
http://trac.edgewall.org/browser/trunk/trac/mimeview/api.py
デフォルトではenscriptでシンタックスハイライトする(たぶん)。
enscriptのオプションは
--color -h -q --language=html -p - -E%s
で、%sには言語名(perlとか)が入る。
http://trac.edgewall.org/browser/trunk/trac/mimeview/enscript.py
Pygmentsを使うプラグインもある。
http://trac-hacks.org/wiki/TracPygmentsPlugin