= Syntax Coloring of Source Code =
Trac supports language-specific syntax highlighting of source code in [wiki:WikiFormatting wiki formatted] text and the [wiki:TracBrowser 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:

 * [http://www.codento.com/people/mtr/genscript/ GNU Enscript] 
 * [http://silvercity.sourceforge.net/ SilverCity]

To activate syntax coloring, simply install either one (or more) of these packages. No additional configuration is required, however to modify the colors, have a look at `trac/htdocs/css/code.css`.

When in use, Trac will automatically prioritize !SilverCity highlighting over Enscript if possible, (see note below). 

If neither package is available, Trac will display the data as plain text. 

'''Note:''' Enscript supports a greater number of languages, however !SilverCity is generally faster since it is a library and isn't executed in an external process.

=== About SilverCity ===
!SilverCity uses the lexer from [http://www.scintilla.org/ Scintilla]. Scintilla supports more languages than !SilverCity implements. If you want to add a language to !SilverCity supported by Scintilla, it's not very difficult. See [http://projects.edgewall.com/trac/wiki/SilverCityAddLanguage SilverCityAddLanguage] for some information how.


== Syntax Coloring Support ==

|| || !SilverCity || Enscript ||
|| Ada      ||   || X ||
|| Asm      ||   || X ||
|| * ASP    || X || X ||
|| * C      || X || X ||
|| * C#     ||   || X(2) ||
|| * C++    || X || X ||
|| * Java   ||   || X ||
|| Awk      ||   || X ||
|| CSS      || X ||   ||
|| Diff     ||   || X ||
|| Eiffel   ||   || X ||
|| Elisp    ||   || X ||
|| Fortran  ||   || X ||
|| Haskell  ||   || X ||
|| HTML     || X || X ||
|| IDL      ||   || X ||
|| Javascript || X || X ||
|| m4       ||   || X ||
|| Makefile ||   || X ||
|| Matlab   ||   || X ||
|| Objective-C|| || X ||
|| Pascal   ||   || X ||
|| * Perl   || X || X ||
|| * PHP    || X || X ||
|| PSP      || X ||   ||
|| Pyrex    ||   || X ||
|| * Python || X || X ||
|| * Ruby   || X || X (1) ||
|| Scheme   ||   || X ||
|| Shell    ||   || X ||
|| SQL      || X || X ||
|| Troff    ||   || X ||
|| TCL      ||   || X ||
|| Tex      ||   || X ||
|| Verilog  ||   || X ||
|| VHDL     ||   || X ||
|| Visual Basic |||| X ||
|| VRML     ||   || X ||
|| XML      || X ||  ||

''(*) Supported as inline code blocks in [wiki:WikiFormatting Wiki text] using WikiProcessors.''

''(1) Ruby highlighting is not included in the Enscript distribution.  Highlighting rules for Ruby can be obtained from: http://neugierig.org/software/ruby/

''(2) C# highlighting is not included in the Enscript distribution.  Highlighting rules for C# can be obtained from: http://wiki.hasno.info/index.php/Csharp.st

== Extra Software ==
 * 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/

----
See also: WikiProcessors, WikiFormatting, TracWiki, TracBrowser