Last modified 12 years ago Last modified on 2013-03-25 09:49:38

Syntax Coloring of Source Code

Trac supports language-specific syntax highlighting of source code within wiki formatted text in wiki processors blocks and in the repository browser.

To do this, Trac uses external libraries with support for a great number of programming languages.

Currently Trac supports syntax coloring using one or more of the following packages:

  • Pygments, by far the preferred system, as it covers a wide range of programming languages and other structured texts and is actively supported
  • GNU Enscript, commonly available on Unix but somewhat unsupported on Windows
  • SilverCity, legacy system, some versions can be problematic

To activate syntax coloring, simply install either one (or more) of these packages (see #ExtraSoftware section below). If none of these packages is available, Trac will display the data as plain text.

About Pygments

Starting with trac 0.11 pygments will be the new default highlighter. It's a highlighting library implemented in pure python, very fast, easy to extend and well documented.

The Pygments default style can specified in the mime-viewer section of trac.ini. The default style can be overridden by setting a Style preference on the preferences page.

It's very likely that the list below is outdated because the list of supported pygments lexers is growing weekly. Just have a look at the page of supported lexers on the pygments webpage.

Syntax Coloring Support

Known MIME Types

MIME TypesWikiProcessors
application/javascriptjs
application/msworddoc dot
application/pdfpdf
application/postscriptps
application/rss+xmlrss
application/rtfrtf
application/vnd.ms-excel.addin.macroEnabled.12xlam
application/vnd.ms-excel.sheet.binary.macroEnabled.12xlsb
application/vnd.ms-excel.sheet.macroEnabled.12xlsm
application/vnd.ms-excel.template.macroEnabled.12xltm
application/vnd.ms-powerpoint.addin.macroEnabled.12ppam
application/vnd.ms-powerpoint.presentation.macroEnabled.12pptm
application/vnd.ms-powerpoint.slideshow.macroEnabled.12ppsm
application/vnd.ms-powerpoint.template.macroEnabled.12potm
application/vnd.ms-word.document.macroEnabled.12docm
application/vnd.ms-word.template.macroEnabled.12dotm
application/vnd.openxmlformats-officedocument.presentationml.presentationpptx
application/vnd.openxmlformats-officedocument.presentationml.slideshowppsx
application/vnd.openxmlformats-officedocument.presentationml.templatepotx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheetxlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.templatexltx
application/vnd.openxmlformats-officedocument.wordprocessingml.documentdocx
application/vnd.openxmlformats-officedocument.wordprocessingml.templatedotx
application/x-clojureclj
application/x-cshcsh
application/x-shsh
application/x-troffnroff roff troff
application/x-yamlyaml yml
application/xsl+xmlxsl
application/xslt+xmlxslt
image/svg+xmlsvg
image/x-iconico
model/vrmlvrml wrl
text/csscss
text/htmlhtm html
text/plainAUTHORS COPYING ChangeLog INSTALL README RELEASE TXT text txt
text/x-actionscriptas
text/x-adaada adb ads
text/x-asmasm
text/x-aspasp
text/x-awkawk
text/x-c++hdrH HH c++hdr hh hpp
text/x-c++srcC C++ CC c++ c++src cc cpp
text/x-chdrchdr h
text/x-csharpC# c# cs csharp
text/x-csrcc csrc xs
text/x-diffdiff patch
text/x-dylandylan
text/x-eiffele eiffel
text/x-elispel elisp
text/x-erlangerl hrl
text/x-fortranf fortran
text/x-haskellhaskell hs
text/x-idlice idl
text/x-infinf
text/x-inicfg ini
text/x-javajava
text/x-kshksh
text/x-lualua
text/x-m4m4
text/x-mailmail
text/x-makefileGNUMakefile Makefile make makefile mk
text/x-objcm mm objc
text/x-ocamlml mli ocaml
text/x-pascalpas pascal
text/x-perlPL perl pl pm
text/x-phpphp php3 php4
text/x-psppsp
text/x-pyrexpyrex pyx
text/x-pythonpy python
text/x-rfcrfc
text/x-rstrst
text/x-rubyrb ruby
text/x-sasssass
text/x-schemescheme scm
text/x-scssscss
text/x-sqlsql
text/x-tcltcl
text/x-textex
text/x-textiletextile txtl
text/x-trac-wikiwiki
text/x-vbabas vb vba
text/x-verilogv verilog
text/x-vhdlvhd vhdl
text/x-zshzsh
text/xmlxml

Note that the rich content may be directly rendered instead of syntax highlighted. This usually depends on which auxiliary packages are installed and on which components are activated in your setup. For example a text/x-rst document will be rendered via docutils if it is installed and the trac.mimeview.rst.ReStructuredTextRenderer is not disabled, and will be syntax highlighted otherwise.

In a similar way, a document with the mimetype text/x-trac-wiki is rendered using the Trac wiki formatter, unless the trac.mimeview.api.WikiTextRenderer component is disabled.

HTML documents are directly rendered only if the render_unsafe_html settings are enabled in the TracIni (those settings are present in multiple sections, as there are different security concerns depending where the document comes from). If you want to ensure that an HTML document gets syntax highlighted and not rendered, use the text/xml mimetype.

List of Languages Supported, by Highlighter

This list is only indicative.

SilverCity Enscript Pygments
Ada
Asm
Apache Conf
ASP
C
C# (1)
C++
Java (2)
Awk
Boo
CSS
Python Doctests
Diff
Eiffel
Elisp
Fortran (1)
Haskell
Genshi
HTML
IDL
INI
Javascript
Lua
m4
Makefile
Mako
Matlab (3)
Mygthy
Objective-C
OCaml
Pascal
Perl
PHP
PSP
Pyrex
Python
Ruby (1)
Scheme
Shell
Smarty
SQL
Troff
TCL
Tex
Verilog (2)
VHDL
Visual Basic
VRML
XML

(1) Not included in the Enscript distribution. Additional highlighting rules can be obtained for Ruby, C#, Fortran 90x/2003

(2) since Silvercity 0.9.7 released on 2006-11-23

(3) By default .m files are considered Objective-C files. In order to treat .m files as MATLAB files, add "text/matlab:m" to the "mime_map" setting in the [mimeviewer] section of trac.ini.

Extra Software


See also: WikiProcessors, WikiFormatting, TracWiki, TracBrowser