Extension:SyntaxHighlight GeSHi
SyntaxHighlight_GeSHi Release status: stable |
|||
---|---|---|---|
Implementation | Tag | ||
Description | Allows source code to be syntax highlighted on the wiki pages | ||
Author(s) | Brion Vibber, Tim Starling and Rob Church | ||
Latest version | continuous updates | ||
MediaWiki | 1.24.+ (older versions compatible with MW 1.11.+ are available) | ||
Database changes | No | ||
License | GPL-2.0+ | ||
Download |
README |
||
|
|||
|
|||
|
|||
Translate the SyntaxHighlight GeSHi extension if it is available at translatewiki.net |
|||
Check usage and version matrix; code metrics | |||
Bugs: list open list all report |
The SyntaxHighlight GeSHi extension allows to display 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.
Contents
Usage[edit | edit source]
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 <source> tag[edit | edit source]
Before rev:50696, the extension used the tag <source>
. This is still supported, but <syntaxhighlight>
avoids conflicts if your source code itself contains <source> (for example XML).
Parameters[edit | edit source]
lang="name"
- 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 the enable_line_numbers flag in GeSHi.
line
- Equivalent to
line="GESHI_FANCY_LINE_NUMBERS"
line start="n"
- 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="n"
- 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[edit | edit source]
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:
-
<!--This is a comment. Comments are not displayed in the browser-->
-
<table align=center style="background: ivory;color:maroon;font-style:italic;font-family:arial;font-weight:bold;font-size:10pt;">
-
<tr><th> Heading 1 </th><th> Heading 2 </th></tr>
-
<tr>
-
<td style="padding:10px;"> This is cell 1 text </td>
-
<td style="padding:10px;"> This is cell 2 text </td>
-
</tr>
-
</table>
Supported languages[edit | edit source]
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.
The GeSHi sources for each language can be found in VCS on SourceForge. Remember to go and select the version that the MediaWiki installation uses.
Extra features[edit | edit source]
Default Source Language[edit | edit source]
Added in rev:50693.
If the site mainly quotes the source code of a specific programming language, it would be helpful to set a default language.
To do so, add a new variable to LocalSettings.php, just after the require_once line. We set C programming language as an example:
require_once "$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php"; $wgSyntaxHighlightDefaultLang = "c";
Installation[edit | edit source]
The MediaWiki extension requires the GeSHi project files from SourceForge to work! To make this easier to install and maintain, the extension in git includes the Geshi project in a subdirectory named geshi
.
Notes:
- GeSHi 1.1.2alpha3 does not work with the MediaWiki extension.
- You can delete the extensions/SyntaxHighlight_GeSHi/geshi/docs directory to save a few megabytes.
Step 1: downloading[edit | edit source]
Use a Git tool to clone https://git.wikimedia.org/git/mediawiki/extensions/SyntaxHighlight_GeSHi.git in the extensions directory of your wiki. For example using the Git command-line tool (from within wiki/extensions/):
git clone https://git.wikimedia.org/git/mediawiki/extensions/SyntaxHighlight_GeSHi.git
If you accidentally do this in the wrong directory, you will need to move clone from the current location to wiki/extensions/, like this:
mv SyntaxHighlight_GeSHi /path/to//wiki/extensions/
control.
Or you can use the ExtensionDistributor.
Step 2: Installation[edit | edit source]
Add this line to the end of your LocalSettings.php:
require_once "$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php";
- GeSHi installation (optional)
If you didn't put GeSHi in the extensions/SyntaxHighlight_GeSHi/geshi directory, then change the following line in SyntaxHighlight_GeSHi.class.php to suit the path of your geshi.php file
require "geshi/geshi.php";
Sometimes you will need to add the absolute path to geshi (/var/www/html/.../geshi/geshi.php)
Here's a shortcut using the PHP dirname() function with the magic __FILE__ constant:
require (dirname(__FILE__).'/geshi/geshi.php');
VisualEditor integration[edit | edit source]
The plugin enables direct editing with VisualEditor. A popup is opened when a user wants to edit source
or syntaxhighlight
sections. For this to work, VisualEditor must be installed and configured from the latest git version, same for Parsoid. The feature randomly does not work with older Parsoid versions.
Configuration[edit | edit source]
If you want the dashed border like for <pre> tags you have to add them again.
Method 1: CSS file[edit | edit source]
- This method requires r52346 or higher of this extension.
Add to MediaWiki:Geshi.css, MediaWiki:Monobook.css or MediaWiki:Common.css pages:
div.mw-geshi { padding: 1em; margin: 1em 0; border: 1px dashed #2f6fab; background-color: #f9f9f9; }
This will give all GeSHi output (except for enclose="none") a dashed border almost identical to <pre> in monobook/main.css
Method 2: Inline CSS[edit | edit source]
You can also edit the SyntaxHighlight_GeSHi.class.php around line 215 (Line 264 in SVN trunk 82481). Look for this:
$css[] = "\tline-height: normal; border: 0px none white;";
and change it to:
$css[] = "\tline-height: normal; border: 1px dashed #2f6fab;";
On a Unix-like system simply type this command in the directory containing "SyntaxHighlight_GeSHi.class.php":
sed -i 's/$css\[\] = "\\tline-height: normal; border: 0px none white;";/ <!!!continued... THE LINE ABOVE AND THE LINE BELOW ARE ALL ONE LINE!> $css\[\] = "\\tline-height: normal; border: 1px dashed #2f6fab;";/g' \ SyntaxHighlight_GeSHi.class.php
Link to Extension Talk (2008): Extension talk:SyntaxHighlight GeSHi/Archive 2008#Problem with CSS: Default style for pre is overwritten
- See also rev:52346.
- If you already add the extension to LocalSettings.php before changing this, comment it out via "#" and refresh the page, then remove the # and refresh one more time.
Default DIV Based Rendering[edit | edit source]
Long strings will cause the page width to blow up when rendered on a web page. The solution to this is to use the enclose="div" tag, this can be enabled by default by editing SyntaxHighlight_GeSHi.class.php near line 156. Look for the following:
... if ( isset( $args['enclose'] ) ) { if ( $args['enclose'] === 'div' ) { $enclose = GESHI_HEADER_DIV; } elseif ( $args['enclose'] === 'none' ) { $enclose = GESHI_HEADER_NONE; } } ...
and append an else case to the if statement:
... if ( isset( $args['enclose'] ) ) { if ( $args['enclose'] === 'div' ) { $enclose = GESHI_HEADER_DIV; } elseif ( $args['enclose'] === 'none' ) { $enclose = GESHI_HEADER_NONE; } } else { $enclose = GESHI_HEADER_DIV;} ...
Bugs and Limitations[edit | edit source]
You may report bugs by clicking here.
See also[edit | edit source]
- GeSHiCodeTag - A working alternative extension that also uses Geshi
- GeSHi - Generic Syntax Highlighter
- ASHighlight (MediaWiki support for Andre Simon's highlight utility)
- Geshi includes every component - no additional downloads
- Include -- yet another source code syntax highlighter
- SyntaxHighlight GeSHi ParserFunction -- Parser function based alternative, can be used with Semantic MediaWiki
- GoogleCodePrettify - syntax highlighter that uses Google Code Prettify library.
- SyntaxHighlighter - syntax highlighter that uses SyntaxHighlighter library.
- SyntaxHighlight GeSHi remote - a patch to support highlighting text retrieved from a URL.
- ViewFiles - an extension, dependent on this one, to support highlighting text from files viewed via a special page.
![]() |
This extension is being used on one or more Wikimedia projects. This probably means that the extension is stable and works well enough to be used by such high-traffic websites. Look for this extension's name in Wikimedia's CommonSettings.php and InitialiseSettings.php configuration files to see where it's installed. A full list of the extensions installed on a particular wiki can be seen on the wiki's Special:Version page. |
Language: | English • Deutsch • 日本語 • русский |
---|