mediawiki-extensions-Syntax.../README
Ori Livneh 9fd1639d46 Disable some highlighting for MOUSs
(...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
2013-02-20 22:06:59 -08:00

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.