Aller au contenu

SyntaxHighlight

De Banane Atomic

Liens

Ajouter un nouveau lexer

La version de Pygments fournit avec Mediawiki ne permet pas d'ajouter de nouveaux lexers.
Il faut donc installer Pygments et demander à Mediawiki d'utiliser plutôt cette version.

pacman -S pygmentize

Création du nouveau lexer

# mise à jour du fichier de mapping: _mapping.py
cd /usr/lib/python3.5/site-packages/pygments/lexers
python ./_mapping.py

# lister tous les lexers pour vérifier que le nouveau lexer a bien été ajouté
pygmentize -L lexer

# tester le lexer: créer un fichier test.html contenant la coloration syntaxique
pygmentize -l mon_lexer -O full -f html -o test.html test.ext

Intégration dans Mediawiki

LocalSettings.php
// forcer Mediawiki a utiliser la version installée au lieu de la version fournie
$wgPygmentizePath = '/usr/bin/pygmentize';
# mettre à jour la liste des lexers:
# /usr/share/webapps/mediawiki/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.lexers.php
cd /usr/share/webapps/mediawiki/extensions/SyntaxHighlight_GeSHi
php maintenance/updateLexerList.php

Configuration

LocalSettings.php
# par défaut
# $wgPygmentizePath = '/usr/share/webapps/mediawiki/extensions/SyntaxHighlight_GeSHi/pygments/pygmentize';
$wgPygmentizePath = '/usr/bin/pygmentize';

Pygments style

Changer default par un autre style: native

/usr/share/webapps/mediawiki/extensions/SyntaxHighlight_GeSHi/maintenance/updateCSS.php
$process = $builder
	->add( '-f' )->add( 'html' )
	->add( '-S' )->add( 'native' )
	->add( '-a' )->add( '.' . SyntaxHighlight_GeSHi::HIGHLIGHT_CSS_CLASS )
	->getProcess();
cd /usr/share/webapps/mediawiki/extensions/SyntaxHighlight_GeSHi
php maintenance/updateCSS.php
# écrase le fichier /usr/share/webapps/mediawiki/extensions/SyntaxHighlight_GeSHi/modules/pygments.generated.css
/etc/php/php.ini
open_basedir = /usr/share/webapps/mediawiki/cache/

Installation

Télécharger l'archive et placer le dossier SyntaxHighlight_GeSHi dans /usr/share/webapps/mediawiki/extensions

LocalSettings.php
wfLoadExtension( 'SyntaxHighlight_GeSHi' );

composer

L'installation de composer est-elle nécessaire ?

sudo pacman -S php-composer

# aller dans le dossier de l'extension
cd /usr/share/webapps/mediawiki/extensions/SyntaxHighlight_GeSHi
composer install
composer update

PHP Fatal error: Class 'Phar' not found in /usr/bin/composer on line 23

/etc/php/php.ini
extension=phar.so

open_basedir restriction in effect. File(/usr/bin/composer) is not within the allowed path(s)

/etc/php/php.ini
open_basedir = /usr/bin/composer

open_basedir restriction in effect. File(/root/.composer/.htaccess)

/etc/php/php.ini
open_basedir = /root/.composer