Tracのシンタックスハイライト

Tracがどうやってシンタックスハイライトしてるか気になったので調べた。


以下の手順でMIMEタイプを判定。

  1. ファイルの拡張子から判定
  2. mimetypesモジュールで判定
  3. ファイル内容のshebang行、Emacsの-*- mode -*-、vimのsyntax=正規表現で判定
  4. ファイル内容からバイナリ判定
  5. 最後までマッチしなかったら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