Difference between revisions of "MediaWiki/Syntax highlighting"
(inital draft) |
m (MediaWiki/Syntax highlighting moved to MediaWiki/Syntax highlighting: not to be confused with the general article on Syntax Highlighting) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Writing good code follows good coding standards. On top of coding standards, syntax highlighting reveals the code making it easier to read (and learn). | 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). | + | 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). 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) you will need to get the more recent source code download of GeSHi. |
− | + | == Installation == | |
+ | # Download GeSHi source | ||
+ | # Download MW extension source | ||
+ | # Make sure MW extension includes geshi.php | ||
+ | # Add include to LocalSettings | ||
== Usage == | == Usage == | ||
− | + | Just use the '''<nowiki><source></nowiki>''' tag with the ''lang'' parameter to define the programming language. Other optional parameters are avaliable too. See the example below. | |
− | + | == 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's documentation]. |
− | + | Since r22246, you can override the colors using <nowiki>[[MediaWiki:GeSHi.css]]</nowiki>. | |
− | |||
− | <nowiki> | ||
− | |||
− | </nowiki> | ||
+ | == Example == | ||
+ | <source lang="php" line> | ||
+ | <?php | ||
+ | if( !defined( 'MEDIAWIKI' ) ) | ||
+ | die(); | ||
− | '' | + | $wgExtensionFunctions[] = 'syntaxHighlightSetup'; |
− | + | $wgExtensionCredits['parserhook']['SyntaxHighlight_GeSHi'] = array( | |
− | + | 'name' => 'SyntaxHighlight', | |
− | + | 'author' => 'Brion Vibber', | |
− | + | 'description' => 'Provides syntax highlighting using [http://qbnz.com/highlighter/ GeSHi Higlighter]', | |
− | + | 'url' => 'http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi', | |
− | + | ); | |
+ | $wgHooks['LoadAllMessages'][] = 'syntaxHighlightLoadMessages'; | ||
− | + | function syntaxHighlightSetup() { | |
− | '' | + | global $wgParser; |
− | + | $wgParser->setHook( 'source', 'syntaxHighlightHook' ); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
+ | ?> | ||
+ | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Supported Languages == | == Supported Languages == | ||
− | + | 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 of additions | ||
== Documentation == | == Documentation == | ||
See http://qbnz.com/highlighter/geshi-doc.html for the extensive documentation. GeSHi is used in a number of other software projects like | See http://qbnz.com/highlighter/geshi-doc.html for the extensive documentation. GeSHi is used in a number of other software projects like | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:Development]] | [[Category:Development]] | ||
[[Category:Wiki]] | [[Category:Wiki]] |
Latest revision as of 16:19, 9 December 2008
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 Generic Syntax Highlighter or GeSHi for short which is available as a Debian package (sudo apt-get install php-geshi). However, if using Brion Vibber's extension (which is better than this alternate GeSHi Code Tag extension because Brion's just registers one new tag: 'source' and uses the extension parameter passing available since MW 1.5) you will need to get the more recent source code download of GeSHi.
Installation[edit | edit source]
- Download GeSHi source
- Download MW extension source
- Make sure MW extension includes geshi.php
- Add include to LocalSettings
Usage[edit | edit source]
Just use the <source> tag with the lang parameter to define the programming language. Other optional parameters are avaliable too. See the example below.
Parameters[edit | edit source]
- lang: Defines the language
- line: Corresponds to enable_line_numbers method on GeSHi
- start: Corresponds to start_line_numbers_at method on GeSHi
- enclose: Corresponds to set_header_type method on GeSHi
- strict: Corresponds to enable_strict_mode method on GeSHi
The effect and usage of these parameters can be consulted in GeSHi's documentation.
Since r22246, you can override the colors using [[MediaWiki:GeSHi.css]].
Example[edit | edit source]
1 <?php
2 if( !defined( 'MEDIAWIKI' ) )
3 die();
4
5 $wgExtensionFunctions[] = 'syntaxHighlightSetup';
6 $wgExtensionCredits['parserhook']['SyntaxHighlight_GeSHi'] = array(
7 'name' => 'SyntaxHighlight',
8 'author' => 'Brion Vibber',
9 'description' => 'Provides syntax highlighting using [http://qbnz.com/highlighter/ GeSHi Higlighter]',
10 'url' => 'http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi',
11 );
12 $wgHooks['LoadAllMessages'][] = 'syntaxHighlightLoadMessages';
13
14 function syntaxHighlightSetup() {
15 global $wgParser;
16 $wgParser->setHook( 'source', 'syntaxHighlightHook' );
17 }
18
19 ?>
Supported Languages[edit | edit source]
These are the languages known by GeSHi that can be used in the lang parameter:
|
|
|
|
See documentation for the latest list of additions
Documentation[edit | edit source]
See http://qbnz.com/highlighter/geshi-doc.html for the extensive documentation. GeSHi is used in a number of other software projects like