mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi
synced 2024-11-15 02:24:07 +00:00
9fd1639d46
(...modules of unusual size.) Enabling full syntax highlighting for very long Lua modules can produce DOMs that have hundreds of thousands of elements and cause browsers to lock up. I took a count of spans by class (which amounts to a count of tokens by type) of https://en.wiktionary.org/wiki/Module:languages and came up with: sy0: 62545 (symbols) br0: 61952 (brackets) st0: 39291 (strings) kw3: 7746 (keywords) kw1: 3 kw2: 2 co2: 2 co1: 2 nu0: 1 ------ ------ Total: 171544 GeSHi allows you to disable highlighting for a particular token type (see <http://qbnz.com/highlighter/geshi-doc.html#disabling-lexics>) which like a good way of handling this issue. Disabling symbols (set_symbols_highlighting(false)) removes both sy0 and br0 elements from the DOM (about 124k elements in the case of Module:languages), with about 47k elements remaining on the page. This is enough to make Chromium responsive on my laptop (2.3ghz i5, 8 GB RAM), but it's still noticeably sluggish. Adding 'set_string_highlighting(false);' removes another 40k elements from the rendered output, and the resulting DOM is quite zippy at 8k elements. Proposed solution: disable symbols highlighting when >100 kB; disable strings highlighting too when >200 kB. Change-Id: I90c645f9d03bbdc135058a3717a463dec40aa77d
74 lines
2.5 KiB
Plaintext
74 lines
2.5 KiB
Plaintext
This extension allows source code to be syntax highlighted on the wiki pages.
|
|
This README file might be out of date, have a look at the extension page
|
|
for updated informations:
|
|
|
|
http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi
|
|
|
|
== Requirements ==
|
|
|
|
This version of the extension has been tested with GeSHi 1.0.8.10 and MediaWiki 1.18
|
|
as of 2011-02-19. It may or may not work with earlier versions of the aforementioned
|
|
software. To get releases of this extension compatible with earlier versions of
|
|
MediaWiki, visit:
|
|
|
|
http://www.mediawiki.org/wiki/Special:ExtensionDistributor/SyntaxHighlight_GeSHi
|
|
|
|
|
|
== Installation ==
|
|
|
|
If you downloaded this from MediaWiki.org, there should already be
|
|
a 'geshi' directory in this folder. If there is, you can skip the next
|
|
paragraph.
|
|
|
|
Download the latest stable build from
|
|
http://sourceforge.net/project/showfiles.php?group_id=114997, and unzip it into
|
|
your extensions/SyntaxHighlight_GeSHi/ directory. (Note: the zip file creates a
|
|
sub-directory called geshi/, and places a file geshi.php there)
|
|
|
|
Add this line to your LocalSettings.php:
|
|
|
|
require_once("extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");
|
|
|
|
If your MediaWiki software is obtained via Subversion, then the latest build
|
|
can be downloaded via the Subversion repository. First of all, is to switch
|
|
into your extensions/SyntaxHighlight_GeSHi/ directory. Then invoke the command
|
|
to obtain the latest build of the GeSHi code:
|
|
|
|
svn checkout https://geshi.svn.sourceforge.net/svnroot/geshi/trunk/geshi-1.0.X/src/ geshi
|
|
|
|
If needed, change the following line on SyntaxHighlight_GeSHi.class.php to
|
|
suit the path of your geshi.php file
|
|
|
|
require_once( 'geshi/geshi.php' );
|
|
|
|
== Usage ==
|
|
|
|
On the wiki page, you can now use "source" elements:
|
|
|
|
<source lang="php">
|
|
<?php
|
|
v = "string"; // sample initialization
|
|
?>
|
|
html text
|
|
<?php
|
|
echo v; // end of php code
|
|
?>
|
|
</source>
|
|
|
|
== Parameters ==
|
|
|
|
Please see the documentation of GeSHi on http://qbnz.com/highlighter/geshi-doc.html
|
|
for detailed information to use some of the parameters.
|
|
|
|
* lang; Defines the language
|
|
* line; Corresponds to enable_line_numbers method on GeSHi
|
|
* start; Corresponds to start_line_numbers_at method on GeSHi
|
|
* strict; Corresponds to enable_strict_mode method on GeSHi
|
|
|
|
== Note ==
|
|
|
|
GeSHi is generous about creating HTML elements: highlighting large blocks of
|
|
code can easily generate enough of them to crash a browser. As a guard, symbol
|
|
highlighting is turned off for code fragments larger than 100 kB. For fragments
|
|
larger than 200 kB, string highlighting is turned off as well.
|