inital draft |
m Text replacement - "<(\/?)source" to "<$1syntaxhighlight" |
||
(4 intermediate revisions by one other 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><syntaxhighlight></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 == | |||
<syntaxhighlight 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' ); | |||
} | |||
?> | |||
</syntaxhighlight> | |||
== 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 13:26, 24 February 2025
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
- Download GeSHi source
- Download MW extension source
- Make sure MW extension includes geshi.php
- Add include to LocalSettings
Usage
Just use the <syntaxhighlight> 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 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
<?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' );
}
?>
Supported Languages
These are the languages known by GeSHi that can be used in the lang parameter:
|
|
|
|
See documentation for the latest list of additions
Documentation
See http://qbnz.com/highlighter/geshi-doc.html for the extensive documentation. GeSHi is used in a number of other software projects like