ソースコードのシンタックスカラーリング
Trac は Wiki形式 のテキストと リポジトリブラウザ での、ソースコードの言語特有のシンタックスハイライトに対応しています。
色付けを行うために、 Trac はとても多くのプログラミング言語に対応している外部のライブラリを使用しています。
現在、 Trac は以下にあげる 1 つ以上のパッケージを使用して、シンタックスハイライトを実現しています:
- GNU Enscript
- SilverCity
- Pygments (0.10 では対応したプラグインが必要です。 以下 を参照してください。)
シンタックスハイライトを有効にするためには、ただこれらのパッケージをインストールするだけです。追加のコンフィグレーションは必要ありませんが、カラーリングを修正するためには、 trac/htdocs/css/code.css を参照してください。
Trac がインストールされたライブラリを検出できない場合は、 Trac のロギングを使用してみてください。実際に Trac から SilverCity 0.9.6 が壊れているように見えます。 0.9.7 か 0.9.5 を使用して下さい。 http://trac.edgewall.org/wiki/TracFaq#why-is-my-css-code-not-being-highlighted-even-though-i-have-silvercity-installed
シンタックスハイライトを使用するとき、可能な限り Trac は自動的に Enscript よりも SilverCity のハイライトを優先します (下の注を参照のこと)。
どちらのパッケージも使用できないときは、 Trac はプレーンテキストでデータを表示します。
Note: Enscript はとても多くのプログラミング言語に対応しますが、 SilverCity はライブラリであり、外部プロセスで実行されないので、 Enscript よりも処理が速いです。
SilverCity について
SilverCity は Scintilla の構文解析エンジンを使用します。 Scintilla は SilverCity が実装しているよりもより多くのプログラミング言語に対応しています。もし、 SilverCity に Scintilla が対応しているプログラミング言語を追加したいならば、そんなに難しいことではありません。どのようにすればいいのかは、 SilverCityAddLanguage を参照してください。
Pygments について
Trac 0.11 からは Pygments が新しいデフォルトのハイライトライブラリになります。 Pygments は Python で実装され、非常に高速で、拡張しやすく、 良いドキュメント があるハイライトライブラリです。 Enscript や Scintilla ほど多くの言語をサポートしませんが総合的な出力品質は、はるかに良いです。
Pygments を Trac 0.11 で使用するためには、 Pygments 0.6 以上をインストールしなければなりません。 Trac 0.10 でも ‘ygments を使用したいのであれば、 tTrac hacks からTracPygmentsPlugin をインストールしなければなりません。なんらかのバグを発見した場合は Pygments の Trac にチケットを登録してください。
Pygments の構文解析エンジンが対応するリストは毎週のように更新されています。以下のリストが古い可能性は非常に高いです。 正確には supported lexers のページを参照してください。
対応しているシンタックスハイライト
SilverCity | Enscript | Pygments | |
Ada | X | ||
Asm | X | ||
Apache Conf (htaccess)) | X | ||
* ASP | X | X | |
* C | X | X | X |
* C# | X(2) | X | |
* C++ | X | X | X |
* Java | X(4) | X | X |
Awk | X | ||
Boo | X | ||
CSS | X | X | |
Python Doctests | X | ||
Diff | X | X | |
Eiffel | X | ||
Elisp | X | ||
Fortran | X(3) | ||
Haskell | X | X | |
Genshi | X | ||
HTML | X | X | X |
IDL | X | ||
INI | X | ||
Javascript | X | X | X |
Lua | X | ||
m4 | X | ||
Makefile | X | X | |
Mako | X | ||
Matlab | X (5) | ||
Mygthy | X | ||
Objective-C | X | ||
OCaml | X | ||
Pascal | X | X | |
* Perl | X | X | X |
* PHP | X | X | |
PSP | X | ||
Pyrex | X | ||
* Python | X | X | X |
* Ruby | X | X (1) | X |
Scheme | X | X | |
Shell | X | X | |
Smarty | X | ||
SQL | X | X | X |
Troff | X | X | |
TCL | X | ||
Tex | X | X | |
Verilog | X(4) | X | |
VHDL | X | ||
Visual Basic | X | X | |
VRML | X | ||
XML | X | X |
(*) WikiFormatting の WikiProcessors でシンタックスハイライトが対応しています。
(1) Enscript では Ruby のハイライトは含まれていません。 Ruby のハイライトルールは http://neugierig.org/software/ruby/ から入手することができます。
(2) C# のハイライトは Enscript の配布物には含まれていません。 C# 用のハイライトのルールは http://wiki.hasno.info/index.php/Csharp.st より入手可能です。
(3) Fortran: Enscript ではパッケージ化されている固定のソース形式のみをサポートしています。 Fortran 90x/2003 のハイライトルールは http://wiki.hasno.info/index.php/F90.st から入手することができます。
(4) 2006 年 11 月 23 日にリリースされた Silvercity 0.9.7 以来更新されていません。
(5) デフォルトで .m ファイルは Objective-C ファイルとして扱われます。 MATLAB ファイルとして .m ファイルを扱うには、 trac.ini の [mimeviewer] セクションの "mime_map" に "text/x-matlab:m" を追加してください。
その他のソフトウェア
- GNU Enscript -- http://directory.fsf.org/GNU/enscript.html
- GNU Enscript for Windows -- http://gnuwin32.sourceforge.net/packages/enscript.htm
- SilverCity -- http://silvercity.sf.net/
- Pygments -- http://pygments.org/
See also: WikiProcessors, WikiFormatting, TracWiki, TracBrowser