Difference between revisions of "MediaWiki/Syntax highlighting"

From Freephile Wiki
Jump to navigation Jump to search
m (MediaWiki/Syntax highlighting moved to MediaWiki/Syntax highlighting: not to be confused with the general article on Syntax Highlighting)
(inital draft)
(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).  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.
+
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 a  [http://meta.wikimedia.org/wiki/GeSHiCodeTag_Extension GeSHi Mediawiki] extension to allows it to be used in this wiki.
  
== Installation ==
+
Incorporating it into Mediawiki is just a matter of creating/configuring the extension and including it in LocalSettings.
# 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.
+
There are two code tags that you can use:
  
== Parameters ==
+
# '''Simple Tag Format:'''      <nowiki><'language'>source code here</'language'></nowiki>
 +
# '''Advanced Tag Format:'''    <nowiki><code ['language'|list] [n] >source code here</code></nowiki>
  
* '''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].
+
'''Tag Examples'''
  
Since r22246, you can override the colors using <nowiki>[[MediaWiki:GeSHi.css]]</nowiki>.
+
''- simple code tag''
 +
<br>
 +
<nowiki>
 +
<php> echo "Hello World"; </php>
 +
</nowiki>
  
== Example ==
 
<source lang="php" line>
 
<?php
 
if( !defined( 'MEDIAWIKI' ) )
 
        die();
 
  
$wgExtensionFunctions[] = 'syntaxHighlightSetup';
+
''- advanced code tag''
$wgExtensionCredits['parserhook']['SyntaxHighlight_GeSHi'] = array(
+
<br>
        'name'          => 'SyntaxHighlight',
+
<nowiki>
        'author'        => 'Brion Vibber',
+
<code php>
        'description'  => 'Provides syntax highlighting using [http://qbnz.com/highlighter/ GeSHi Higlighter]',
+
echo "Hello World";
        'url'          => 'http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi',
+
</code>
);
+
</nowiki>
$wgHooks['LoadAllMessages'][] = 'syntaxHighlightLoadMessages';
 
  
function syntaxHighlightSetup() {
+
        global $wgParser;
+
''- advanced code tag with line numbers''
        $wgParser->setHook( 'source', '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 ==
 
== Supported Languages ==
These are the languages known by GeSHi that can be used in the '''lang''' parameter:
+
<code list></code>
{| 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  
 +
*  Dokuwiki - An advanced wiki engine
 +
* gtk.php.net - Their manual uses GeSHi for syntax highlighting
 +
* WordPress - A powerful blogging system*
 +
* PHP-Fusion - A constantly evovling CMS
 +
* SQL Manager - A Postgres DBAL
 +
* Mambo - A popular open source CMS
 +
* MediaWiki - A leader in Wikis*
 +
* TikiWiki - A megapowerful Wiki/CMS
 +
* TikiPro - Another powerful Wiki based on Tikiwiki
 +
* RWeb - A site-building tool
 +
If you want to use it in OASIS projects besides this wiki, then start with the documentation.
 +
  
 
[[Category:Development]]
 
[[Category:Development]]
 
[[Category:Wiki]]
 
[[Category:Wiki]]

Revision as of 21:17, 3 June 2007

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). Adding a GeSHi Mediawiki extension to allows it to be used in this wiki.

Incorporating it into Mediawiki is just a matter of creating/configuring the extension and including it in LocalSettings.

Usage[edit | edit source]

There are two code tags that you can use:

  1. Simple Tag Format: <'language'>source code here</'language'>
  2. Advanced Tag Format: <code ['language'|list] [n] >source code here</code>


Tag Examples

- simple code tag
<php> echo "Hello World"; </php>


- advanced code tag
<code php> echo "Hello World"; </code>


- advanced code tag with line numbers
<code php n> echo "Hello World"; </code>


- default code tag
<code> echo "Hello World"; </code>


- display a list of supported languages
<code list></code>

Supported Languages[edit | edit source]

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

  • Dokuwiki - An advanced wiki engine
  • gtk.php.net - Their manual uses GeSHi for syntax highlighting
  • WordPress - A powerful blogging system*
  • PHP-Fusion - A constantly evovling CMS
  • SQL Manager - A Postgres DBAL
  • Mambo - A popular open source CMS
  • MediaWiki - A leader in Wikis*
  • TikiWiki - A megapowerful Wiki/CMS
  • TikiPro - Another powerful Wiki based on Tikiwiki
  • RWeb - A site-building tool

If you want to use it in OASIS projects besides this wiki, then start with the documentation.