Trac supports syntax coloring of any programming language that either GNU Enscript or SilverCity support, which seems to include every single thing other than Common Lisp. Sometimes I use Lisp, so this annoyed me. I used XML-RPC to glue Brian Mastenbrook's colorize (which is used by the paste service at paste.lisp.org) to Trac.
colorization-server.tar.gz has the Lisp side of the XML-RPC glue, a small patch to colorize to add the option of not doing fancy paren matching (which didn't fit into Trac's output very well) and a little SBCL-specific startup script.
trac-lisp.py is the Python/Trac side glue. Drop it into Trac's mimeview directory, rename it to lisp.py, change the COLORIZER_URL to point to the machine you're going to run the colorization server on, add a 'lisp':'text/x-lisp' entry to MIME_MAP in mimeview/api.py, add 'trac.mimeview.lisp' to the default_components in db_default.py.
Copy the CSS that's in colorize's *coloring-css* variable into a file called lisp.css and put that file in Trac's htdocs/css directory. Start up a lisp running the colorization server, restart Trac and you're set.
I put in a small LRU cache to avoid hitting the XML-RPC server every single time Trac needs to render a page containing Lisp source code, but even with cache misses the XML-RPC roundtrip is barely noticeable. I use Trac in standalone mode, which is probably the only reason the caching works—if you use CGI mode, you're on your own.
Of course, trac-lisp.py could easily be modified to be a more general interface between Trac and colorize, with support for any language colorize understands.
Later: I didn't realize Trac had syntax to turn on language-specific coloring of code blocks on wiki pages, in which case my caching would do the bad thing. I've fixed the code.Posted by jjwiseman at April 02, 2006 05:03 PM