Help:Syntaxhighlight
The Extension:SyntaxHighlight GeSHi tag displays formatted source code with the <syntaxhighlight>
tag.
This extension also adds coloring according to the code language settings. Like the <pre>
tags and the <poem>
tags, the tags shows the coding exactly as it was typed, preserving white space.
This extension also can create line numbers.
source tag replaced
Before rev:50696, the <source>
tag was used. It is still supported, but <syntaxhighlight>
is recommended to avoid possible conflicts. The original syntax is used in some other languages, e.g. XML.
Usage
On the wiki page, you can now use "syntaxhighlight" elements:
<syntaxhighlight lang="php"> <?php $v = "string"; // sample initialization ?> html text <? echo $v; // end of php code ?> </syntaxhighlight>
shows:
<?php
$v = "string"; // sample initialization
?>
html text
<?
echo $v; // end of php code
?>
Alternative Tag
<source>
is also used in some other languages (for example XML). If your source code contains <source>, it will conflict with this tag since there is no way for the interpreter to identify how each is used.
As of rev:50696, an alternative tag <syntaxhighlight>
is provided. <syntaxhighlight>
is recommended to avoid the conflicts mentioned above.
Parameters
lang="??"
- Defines what programming language the source code is using. This affects how the extension highlights the source code. See the section "Supported languages" in this page for details of supported languages.
line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"
- Type of line numbering to use. If you do not provide this parameter, then lines will not be numbered. Corresponds to enable_line_numbers the flag in GeSHi.
line
- Equivalent to
line="GESHI_FANCY_LINE_NUMBERS"
line start="??"
- Use together with the parameter "line". Define the start number of the line. If you type line start="55", it will start counting at 55, then 56,57,58... and so on. Corresponds to start_line_numbers_at method on GeSHi
highlight="??"
- Specifies which line is highlighted. Note that the parameter line start="??" doesn't affect how it counts the lines.
enclose="??"
- Specifies what container is used to enclose the source code. Takes values "pre" (default value), "div", "none". Corresponds to set_header_type method on GeSHi. Choosing "div" will cause text to wrap, which is helpful if text is extending off the edge of the screen, causing horizontal scrolling.
strict
- Type the name of the parameter to enable the strict mode. 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.
More Usage
When line numbering is added with line, long code lines will be wrapped. See the example below. When text is the selected language, and numbering is used, the behaviour resembles the use of pre tags with numbering and long-line wrapping.
The following example shows how to color an HTML code listing:
<syntaxhighlight lang="html4strict" line start="100" highlight="5" enclose="div"> HTML module goes here... </syntaxhighlight>
A typical result is just:
100<!--This is a comment. Comments are not displayed in the browser-->
101<table align=center style="background: ivory;color:maroon;font-style:italic;font-family:arial;font-weight:bold;font-size:10pt;">
102<tr><th> Heading 1 </th><th> Heading 2 </th></tr>
103<tr>
104<td style="padding:10px;"> This is cell 1 text </td>
105<td style="padding:10px;"> This is cell 2 text </td>
106</tr>
107</table>
Supported languages
These are the languages known by GeSHi that can be used in the lang parameter.
Note that installed GeSHi version (can be revealed by previewing e.g. <syntaxhighlight lang="-"></syntaxhighlight>
) might not be the most recent version; see bugzilla:10967 for Wikimedia sites.