Writing good code follows good coding standards. On top of coding standards, syntax highlighting reveals the code making it easier to read (and learn).
There is a [http://qbnz.com/highlighter/faq.php Generic Syntax Highlighter] or GeSHi for short which is available as a Debian package (sudo apt-get install php-geshi). Adding However, if using [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi Brion Vibber's extension] (which is better than this alternate [http://meta.wikimedia.org/wiki/GeSHiCodeTag_Extension GeSHi Code Tag] extension because Brion's just registers one new tag: 'source' and uses the extension parameter passing available since MW 1.5) extension you will need to allows it to be used in this wikiget the more recent source code download of GeSHi.
Incorporating it into Mediawiki is just a matter of creating/configuring the == Installation ==# Download GeSHi source# Download MW extension and including it in source# Make sure MW extension includes geshi.php# Add include to LocalSettings.
== Usage ==
There Just use the '''<nowiki><source></nowiki>''' tag with the ''lang'' parameter to define the programming language. Other optional parameters are two code tags that you can use:avaliable too. See the example below.
# '''Simple Tag Format:''' <nowiki><'language'>source code here</'language'></nowiki># '''Advanced Tag Format:''' <nowiki><code ['language'|list] [n] >source code here</code></nowiki>== Parameters ==
* '''lang:''' Defines the language
* '''line:''' Corresponds to [http://qbnz.com/highlighter/geshi-doc.html#enabling-line-numbers enable_line_numbers] method on GeSHi
* '''start:''' Corresponds to [http://qbnz.com/highlighter/geshi-doc.html#starting-line-numbers start_line_numbers_at] method on GeSHi
<!--
* '''case:''' Corresponds to [http://qbnz.com/highlighter/geshi-doc.html#auto-caps-nocaps set_case_keywords] method on GeSHi
* '''tab:''' Corresponds to [http://qbnz.com/highlighter/geshi-doc.html#setting-tab-width set_tab_width] method on GeSHi
-->
* '''enclose:''' Corresponds to [http://qbnz.com/highlighter/geshi-doc.html#the-code-container set_header_type] method on GeSHi
* '''strict:''' Corresponds to [http://qbnz.com/highlighter/geshi-doc.html#using-strict-mode enable_strict_mode] method on GeSHi
The effect and usage of these parameters can be consulted in [http://qbnz.com/highlighter/geshi-doc.html GeSHi'''Tag Examples'''s documentation].
''- simple code tag''<br>Since r22246, you can override the colors using <nowiki><php> echo "Hello World"; </php>[[MediaWiki:GeSHi.css]]</nowiki>.
== Example ==
<source lang="php" line>
<?php
if( !defined( 'MEDIAWIKI' ) )
die();
$wgExtensionFunctions[] = 'syntaxHighlightSetup'- advanced code tag;$wgExtensionCredits['parserhook']['SyntaxHighlight_GeSHi'] = array( 'name' => 'SyntaxHighlight',<br 'author' =>'Brion Vibber',<nowiki 'description' =>'Provides syntax highlighting using [http://qbnz.com/highlighter/ GeSHi Higlighter]',<code php 'url' =>'http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi', echo "Hello World");</code></nowiki>$wgHooks['LoadAllMessages'][] = 'syntaxHighlightLoadMessages';
function syntaxHighlightSetup() { global $wgParser; $wgParser->setHook( 'source'- advanced code tag with line numbers, 'syntaxHighlightHook'<br><nowiki><code php n> echo "Hello World");</code></nowiki>}
?>
</source>
''- default code tag''
<br>
<nowiki>
<code>
echo "Hello World";
</code>
</nowiki>
''- display a list of supported languages''
<br>
<nowiki>
<code list></code>
</nowiki>
== Supported Languages ==
<code These are the languages known by GeSHi that can be used in the '''lang''' parameter:{| border="0" cellpadding="0" cellspacing="20"|- valign="top"|* actionscript* ada* apache* applescript* asm* asp* autoit* bash* blitzbasic* bnf* c* caddcl* cadlisp* cfdg* cfm* cpp-qt* cpp* csharp* css-gen.cfg* css|* c_mac* d* delphi* diff* div* dos* eiffel* fortran* freebasic* gml* groovy* html4strict* idl* ini* inno* io* java* java5* javascript* latex|* lisp* lua* matlab* mirc* mpasm* mysql* nsis* objc* ocaml-brief* ocaml* oobas* oracle8* pascal* perl* php-brief* php* plsql* python* qbasic* reg|* robots* ruby* sas* scheme* sdlbasic* smalltalk* smarty* sql* tcl* text* thinbasic* tsql* vb* vbnet* vhdl* visualfoxpro* winbatch* xml* z80|}See '''documentation''' for the latest list></code>of additions
== Documentation ==