Extension:SyntaxHighlight

De Mi caja de notas

Révision datée du 4 novembre 2019 à 18:05 par Xtof (discussion | contributions) (Page créée avec « Mise en valeur de syntaxe : == Usage avec `syntaxhighlight`== <syntaxhighlight lang="Python" line='line'> def quickSort(arr): less = [] pivotList = [] more = [] if... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Mise en valeur de syntaxe :


Usage avec `syntaxhighlight`

1 def quickSort(arr):
2 	less = []
3 	pivotList = []
4 	more = []
5 	if len(arr) <= 1:
6 		return arr
7 	else:
8 		pass

LocalSettings.php

Voici le fichier de configuration de ce wiki au 4 novembre 2019

  1 <?php
  2 # This file was automatically generated by the MediaWiki 1.23.5
  3 # installer. If you make manual changes, please keep track in case you
  4 # need to recreate them later.
  5 #
  6 # See includes/DefaultSettings.php for all configurable settings
  7 # and their default values, but don't forget to make changes in _this_
  8 # file, not there.
  9 #
 10 # Further documentation for configuration settings may be found at:
 11 # https://www.mediawiki.org/wiki/Manual:Configuration_settings
 12 
 13 # Protect against web entry
 14 if ( !defined( 'MEDIAWIKI' ) ) {
 15 	exit;
 16 }
 17 
 18 ## Uncomment this to disable output compression
 19 # $wgDisableOutputCompression = true;
 20 
 21 $wgSitename = "wikiducamp";
 22 $wgMetaNamespace = "Projet";
 23 
 24 ## Le chemin de base URL vers le dossier contenant le wiki;
 25 ## defaults for all runtime URL paths are based off of this.
 26 ## Pour plus d'informations sur la personnalisation des URLs regardez SVP :
 27 ## http://www.mediawiki.org/wiki/Manual:Short_URL
 28 $wgScriptPath = "";
 29 $wgScriptExtension = ".php";
 30 $wgArticlePath = "/$1";
 31 $wgUsePathInfo = true;
 32 
 33 # (enjoliver URL via indieweb.org/Mediawiki-customization)
 34 # $wgCapitalLinks = false;
 35 
 36 ## Le protocole et le nom du serveur à utiliser dans les URLs pleinement qualifiées
 37 $wgServer = "https://ducamp.me";
 38 
 39 ## Le chemin relatif URL vers le dossier des skins
 40 $wgStylePath = "$wgScriptPath/skins";
 41 
 42 ## Le chemin relatif URL vers le logo. Assurez de modifier ça à partir du défaut,
 43 ## ou sinon vous écraserez votre logo lors de la mise à jour !
 44 $wgLogo = "$wgStylePath/common/images/graisse-chassis.png";
 45 
 46 ## UPO signifie : c'est aussi une option de préférence utilisateur
 47 
 48 $wgEnableEmail = true;
 49 $wgEnableUserEmail = true; # UPO
 50 
 51 $wgEmergencyContact = "christophe@ducamp.me";
 52 $wgPasswordSender = "christophe@ducamp.me";
 53 
 54 $wgEnotifUserTalk = false; # UPO
 55 $wgEnotifWatchlist = false; # UPO
 56 $wgEmailAuthentication = true;
 57 
 58 ## Database settings
 59 $wgDBtype = "mysql";
 60 $wgDBserver = "localhost";
 61 $wgDBname = "monwiki";
 62 $wgDBuser = "monwiki";
 63 $wgDBpassword = "dugVpN2F";
 64 
 65 # MySQL specific settings
 66 $wgDBprefix = "";
 67 
 68 # MySQL table options to use during installation or update
 69 $wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
 70 
 71 # Experimental charset support for MySQL 5.0.
 72 $wgDBmysql5 = false;
 73 
 74 ## Shared memory settings
 75 $wgMainCacheType = CACHE_NONE;
 76 $wgMemCachedServers = array();
 77 
 78 ## Pour autoriser le televersement d'images, assurez vous que le répertoire 'images' 
 79 ## soit writable, puis réglez sur true:
 80 $wgEnableUploads = true;
 81 $wgUseImageMagick = true;
 82 $wgImageMagickConvertCommand = "/usr/bin/convert";
 83 
 84 
 85 # InstantCommons permet au wiki d'utiliser les images provenant de http://commons.wikimedia.org
 86 $wgUseInstantCommons = true;
 87 
 88 ## Si vous utilisez ImageMagick (ou toute autre commande shell) sur un serveur
 89 ## Linux, this will need to be set to the name of an
 90 ## available UTF-8 locale
 91 $wgShellLocale = "en_US.utf8";
 92 
 93 ## If you want to use image uploads under safe mode,
 94 ## create the directories images/archive, images/thumb and
 95 ## images/temp, and make them all writable. Then uncomment
 96 ## this, if it's not already uncommented:
 97 #$wgHashedUploadDirectory = false;
 98 
 99 ## Set $wgCacheDirectory to a writable directory on the web server
100 ## to make your wiki go slightly faster. The directory should not
101 ## be publically accessible from the web.
102 #$wgCacheDirectory = "$IP/cache";
103 
104 # Site language code, should be one of the list in ./languages/Names.php
105 $wgLanguageCode = "fr";
106 
107 $wgSecretKey = "9652b3afe249ec6722ba428622df08a128ef0b0d6c2cf309c358787df1653dc9";
108 
109 # Site upgrade key. Must be set to a string (default provided) to turn on the
110 # web installer while LocalSettings.php is in place
111 $wgUpgradeKey = "acd224e9eeb6b2f1";
112 
113 ## Skin par défaut : vous pouvez modifier la skin par défaut. Utilisez les noms de symboles 
114 ## internes, c-a-d. 'cologneblue', 'monobook', 'vector':
115 $wgDefaultSkin = "vector";
116 
117 wfLoadSkin( 'MonoBook' );
118 wfLoadSkin( 'Timeless' );
119 wfLoadSkin( 'Vector' );
120 
121 
122 ## Pour accrocher des metadonnees de licence aux pages, et afficher une 
123 ## notice appropriee / icone de copyright. GNU Free Documentation
124 ## License and Creative Commons licenses are supported so far.
125 $wgEnableCreativeCommonsRdf = true;
126 $wgRightsPage = "WikiDucamp:Copyrights"; # Mettre ici le titre d'une page wiki qui décrit votre licence/copyright
127 $wgRightsUrl = "http://creativecommons.org/publicdomain/zero/1.0/";
128 $wgRightsText = "a CC0 public domain dedication";
129 $wgRightsIcon = "https://i.creativecommons.org/p/zero/1.0/88x31.png";
130 
131 # Chemin vers utilitaire GNU diff3. utilisé pour la résolution de conflit.
132 $wgDiff3 = "/usr/bin/diff3";
133 
134 # Extensions activees. La plupart des extensions sont activees en incluant ici le fichier de base de l'extension
135 # mais verifier la documentation specifique de l'extension pour plus de details
136 # Les extensions suivantes ont été automatiquement activées :
137 
138 require_once "$IP/extensions/InputBox/InputBox.php";
139 require_once "$IP/extensions/Interwiki/Interwiki.php";
140 require_once "$IP/extensions/Nuke/Nuke.php";
141 require_once "$IP/extensions/Poem/Poem.php";
142 
143 # Fin des reglages automatiquement generes.
144 
145 # Ajouter en-dessous les options de configuration.
146 
147 wfLoadExtension( 'Cite' );
148 wfLoadExtension( 'ParserFunctions' );
149 wfLoadExtension( 'Auth_remoteuser' );
150 wfLoadExtension( 'CategoryTree' );
151 wfLoadExtension( 'ConfirmEdit' );
152 wfLoadExtension( 'Gadgets' );
153 wfLoadExtension( 'ImageMap' );
154 wfLoadExtension( 'LocalisationUpdate' );
155 $wgLocalisationUpdateDirectory = "$IP/cache";
156 wfLoadExtension( 'WikiEditor' );
157 $wgHiddenPrefs[] = 'usebetatoolbar';
158 wfLoadExtension( 'HeaderTabs' );
159 wfLoadExtension( 'SpamBlacklist' );
160 wfLoadExtension( 'TitleBlacklist' );
161 wfLoadExtension( 'PdfHandler' );
162 
163 # Extensions IndieWeb
164 
165 require_once('extensions/IndieWeb/raw.php');
166 require_once('extensions/IndieWeb/notitle.php');
167 require_once('extensions/IndieWeb/AllowAnchorTags.php');
168 require_once('extensions/IndieWeb/Calendar.php');
169 
170 # require_once('extensions/IndieWeb/RelWebmention.php');
171 # require_once('extensions/IndieWeb/LassoAuth.php');
172 
173 # LassoAuth::$auth = 'https://sso.indieweb.org/';
174 # LassoAuth::$wiki = 'https://indieweb.org/';
175 
176 # Droits utilisateurs IndieWeb 
177 $wgGroupPermissions['*']['read'] = true;
178 $wgGroupPermissions['*']['edit'] = false;
179 $wgGroupPermissions['*']['createaccount'] = false;
180 $wgGroupPermissions['*']['autocreateaccount'] = true;
181 $wgGroupPermissions['user']['move'] = true;
182 $wgGroupPermissions['user']['movefile'] = true;
183 $wgGroupPermissions['user']['delete'] = true;
184 $wgGroupPermissions['user']['undelete'] = true;
185 $wgGroupPermissions['user']['browsearchive'] = true;
186 $wgGroupPermissions['user']['rollback'] = true;
187 $wgDefaultUserOptions ['editsection'] = true;
188 $wgAllowUserSkin = true;
189 $wgAllowUserCss = true;
190 $wgAllowUserJs = true;
191 
192 # Mise en valeur syntaxe 
193 wfLoadExtension( 'SyntaxHighlight_GeSHi' );
194 
195 
196 # Gestion des groupes utilisateurs : droits de modifier - interdire éditions aux utilisateurs non enregistres. 
197 
198 # $wgGroupPermissions['*']['edit'] = false; 
199 # $wgEmailConfirmToEdit = true;
200 # $wgGroupPermissions['user']['edit'] = true;
201 
202 # Permission de création de comptes uniquement 
203 # $wgGroupPermissions['*']['createaccount'] = false; 
204 $wgGroupPermissions['sysop']['createaccount'] = true;
205 
206 ## Permission de modifier l'interwiki
207 ## Pour créer des droits pour les groupes d'utilisateurs qui puissent modifier la data interwiki
208 require_once( "extensions/Interwiki/Interwiki.php" );
209 
210 # Pour donner des permissions aux sysops de modifier la data interwiki
211 $wgGroupPermissions['sysop']['interwiki'] = true;
212 
213 # (les bureaucrates pourront ajouter des utilisateurs à ce groupe)
214 $wgGroupPermissions['bureaucrats']['interwiki'] = true;
215 
216 
217 #Extension:Youtube 
218 wfLoadExtension( 'YouTube' );
219 
220 //Bandeau site
221 $wgSiteNotice = "==IndieWeb Learning Zone==";
222 
223 #Html ok 
224 # $wgRawHtml['sysop'] = true; (inoperant sur v 1.3)
225 wfLoadExtension( 'SaferHTMLTag' );
226 $wgGroupPermissions['sysop']['edit-html'] = true; // Enable in-wiki HTML editing for sysops.
227 
228 #Image Tag
229 $wgAllowImageTag = true;
230  
231 
232 // Transclusion
233 $wgEnableScaryTranscluding = true;
234 
235 # MSUpload pour téléverser plusieurs fichiers par glisser déposer
236 wfLoadExtension( 'MsUpload' );
237 
238 $wgMSU_useDragDrop = true; // Should the drag & drop area be shown? (Not set by default)
239 $wgMSU_showAutoCat = true; // Files uploaded while editing a category page will be added to that category
240 $wgMSU_checkAutoCat = true; // Whether the checkbox for adding a category to a page is checked by default
241 $wgMSU_useMsLinks = false; // Insert links in Extension:MsLinks style?
242 $wgMSU_confirmReplace = true; // Show the "Replace file?" checkbox
243 $wgMSU_imgParams = 'thumb|none'; // Any image parameter separated by a semicolon. Examples are: {width}px, left, right, center, none, border, frameless, frame, thumb etc etc
244 $wgEnableWriteAPI = true; // Enable the API
245 $wgEnableUploads = true; // Enable uploads
246 $wgAllowJavaUploads = true; // Solves problem with Office 2007 and newer files (docx, xlsx, etc.)
247 $wgGroupPermissions['user']['upload'] = true; // Allow regular users to upload files
248 
249 
250 // Make sure that the file types you want to upload are allowed:
251 $wgFileExtensions = array('png','svg','gif','jpg','jpeg','doc','xls','pdf','ppt','tiff','bmp','docx','xlsx','pptx');
252 
253 
254 #Afficher des images externes
255 $wgAllowExternalImagesFrom = array( 'http://upload.wikimedia.org', 'http://vicnent.com' , 'http://www.flickr.com' );
256 
257 
258 # Twitter Login fonctionnel selon navigateurs
259 # require_once "$IP/extensions/TwitterLogin/TwitterLogin.php";
260 # include_once("$IP/extensions/TwitterLogin/TwitterLogin.php");
261 # $wgConsumerKey = 'W7q5lP4UEtEe9bjeec6j3z83n';
262 # $wgConsumerSecret = 'lHimEftsr0UFLUTD2Jn6mP2CQaP4Ha5iPd1mOo671VlSnPuZLS';
263 
264 # Header Tabs (onglets titres)
265 #require_once "$IP/extensions/HeaderTabs/HeaderTabs.php";
266 $htEditTabLink= false;
267 
268 ## Lecture seule 
269 # $wgReadOnly = 'Maintenance du Site - Chantier Sauvegarde';
270 
271 # Retirer l'onglet discussion 
272 function RemoveVectorTabs( SkinTemplate &$sktemplate, array &$links ) { 
273         global $wgUser, $wgHVTFUUviewsToRemove;
274         if ( isset( $links['namespaces']['talk'] ))
275                 unset( $links['namespaces']['talk'] );
276         return true;
277 }
278 $wgHooks['SkinTemplateNavigation'][] = 'RemoveVectorTabs';
279 
280 # Extension TemplateData
281 #require_once "$IP/extensions/TemplateData/TemplateData.php";
282 // Set this to true to enable the TemplateData GUI editor
283 $wgTemplateDataUseGUI = true;
284 
285 # Extension Bootstrap-skin
286 #require_once "$IP/extensions/BootstrapExtension.php";
287 
288 # Voir les détails des erreurs
289 #$wgShowExceptionDetails = true;

This page is a translated version of the page Extension:SyntaxHighlight and the translation is 100% complete.
Cette extension est fournie avec MediaWiki 1.21 et supérieur. Les instructions de configuration restantes doivent encore être suivies.
Pour utiliser la coloration syntaxique dans les éditeurs wikitext, comme l’éditeur de source, voir l'extension CodeMirror ou les scripts utilisateurs de Remember the dot and Cacycle.
Manuel des extensions MediaWiki
SyntaxHighlight
État de la version : stable
Implémentation Balise
Description Permet de mettre en surbrillance la syntaxe du code source sur les pages wiki
Auteur(s)
Dernière version mises à jour continues
Politique de compatibilité Le master conserve la compatibilité arrière.
MediaWiki 1.25+
Modifie la base
de données
Non
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
README
  • $wgSyntaxHighlightMaxLines
  • $wgPygmentizePath
  • $wgSyntaxHighlightMaxBytes
‎<syntaxhighlight>
Traduire l’extension SyntaxHighlight
Problèmes Tâches ouvertes · Signaler un bogue

L'extension SyntaxHighlight, anciennement connue sous le nom de SyntaxHighlight_GeSHi, fournit un formatage riche du code source à l'aide de la balise ‎<syntaxhighlight>. Il est propulsé par la bibliothèque Pygments et prend en charge des centaines de langages de programmation et de formats de fichiers différents.

Comme les balises ‎<pre> et <poem >, le texte est affiché exactement comme il a été tapé, en préservant tous les espaces.

L'extension SyntaxHighlight ne fonctionne pas sur les installation wiki hardened en utilisant Hardened-PHP dû au manque de proc_open, shell_exec et autres fonctions.

Voir T250763.

La balise ‎<syntaxhighlight> est devenue très coûteuse depuis la 1.39 pour 5 000 ou une autre quantité extrême de balises de surbrillance de syntaxe sur une seule page, comme pour Wikibooks.

Dans les cas limites, augmenter la valeur du temps d'attente du serveur web dans les environnements. (Voir T316858).

Utilisation

Une fois installé, vous pouvez utiliser les balises syntaxhighlight sur les pages wiki. Par exemple,

def quick_sort(arr):
	less = []
	pivot_list = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass

est le résultat de la balise de texte wiki suivante :

<syntaxhighlight lang="python" line>
def quick_sort(arr):
	less = []
	pivot_list = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass
</syntaxhighlight>

Pour utiliser un code source qui est transclus, par exemple pour un appel de module, utilisez le #tag de l'analyseur et le safesubst: :[1]

{{#tag:syntaxhighlight|{{safesubst:Module:Sandbox/userName/myModule}}|lang=lua}}

Avant MediaWiki 1.16, l'extension utilisait la balise ‎<source>. Cette balise est encore supportée mais elle est obsolète. ‎<syntaxhighlight> doit toujours être utilisé.

Mise en forme

Si le code affiché est trop long, vous pouvez l'ajuster en mettant ce qui suit dans la page MediaWiki:Common.css de votre wiki (créez-la si elle n'existe pas) :

/* le CSS placé ici sera appliqué à tous les habillages */
.mw-highlight pre {
	font-size: 90%;
    /*  ajouter ici les styles CSS */
}

L'encapsulation de blocs de code dans des bordures peut être effectuée en insérant une ligne comme border: 1px dashed blue; dans la section ci-dessus Le contrôle sur la « famille de polices » utilisée peut également être exercé en insérant une ligne comme font-family: "Courier New", monospace; dans la section ci-dessus.

Une méthode pratique pour générer le code CSS en masse correspondant à l'un des schémas de couleurs pris en charge par Pygments est d'exécuter la commande suivante à partir du dossier d'installation MediaWiki.

Cet exemple concerne le schéma de couleurs stata-dark :

./extensions/SyntaxHighlight_GeSHi/pygments/pygmentize -S stata-dark -f html | sed 's/^/.mw-highlight /'

Cela produira un long code CSS similaire à :

.mw-highlight pre { line-height: 125%; }
.mw-highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
.mw-highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
.mw-highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.mw-highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.mw-highlight .hll { background-color: #49483e }
.mw-highlight .c { color: #777; font-style: italic } /* Comment */
.mw-highlight .err { color: #A61717; background-color: #E3D2D2 } /* Error */
.mw-highlight .esc { color: #CCC } /* Escape */
/* ... and so on ... */

Ces lignes CSS peuvent ensuite être copiées et collées dans une page CSS globale à tout le site telle que MediaWiki:Common.css, ou une page spécifique à l'habillage telle que MediaWiki:Vector.css.

Catégorie d'erreurs de la mise en surbrillance de la syntaxe

L'extension ajoute à une catégorie de suivi les pages qui ont un mauvais attribut lang dans une balise ‎<syntaxhighlight>. La clé de message MediaWiki:syntaxhighlight-error-category détermine le nom de la catégorie; sur ce wiki, c'est Category:Pages with syntax highlighting errors.

L'erreur la plus courante qui conduit à marquer les pages avec cette catégorie est une balise ‎<syntaxhighlight> sans attribut lang du tout, car les versions plus anciennes de cette extension prenaient en charge la définition de $wgSyntaxHighlightDefaultLang .

Ceux-ci peuvent généralement être remplacés soit par ‎<pre>, ou lang="text" peut être ajouté à la balise. Par exemple :

<syntaxhighlight lang="text">
...
</syntaxhighlight>

La catégorie peut également être ajoutée, et le contenu ne sera pas mis en surbrillance, s'il y a plus de 1 000 lignes ou plus de 100 kB de texte.[2]

Paramètres

lang

L'attribut lang="name" définit quel lexer doit être utilisé.[3] Le langage affecte la façon dont l'extension met en surbrillance le code source. Voir Langages supportés pour le détail des langages pris en charge.

def quick_sort(arr):
    less = []
<syntaxhighlight lang="python">
...
</syntaxhighlight>

En indiquant un nom non valide ou inconnu, la page sera marquée avec une catégorie de suivi. Voir la section Catégorie d'erreurs de SyntaxHighlight sur cette page pour des détails.

line

L'attribut line permet d'afficher les numéros des lignes.

def quick_sort(arr):
	less = []
<syntaxhighlight lang="python" line>
...
</syntaxhighlight>

start

L'attribut start (en combinaison avec line) définit le premier numéro de ligne du bloc de code. Par exemple, line start="55" fera que le numérotation des lignes commence à la ligne 55.

def quick_sort(arr):
    less = []
<syntaxhighlight lang="python" line start="55">
...
</syntaxhighlight>
Version de MediaWiki :
1.36
Gerrit change 653142

L'attribut linelinks (en combinaison avec line) ajoute des ancres de lien à chaque ligne du bloc de code. Vous pouvez cliquer sur les numéros de lignes pour obtenir un lien qui met en surbrillance la ligne sélectionnée et les utiliser dans les liens internes et externes. Vous pouvez également maintenir ⇧ Shift et cliquer sur un autre numéro de ligne pour obtenir un lien mettant en surbrillance la plage de lignes sélectionnée (Depuis MediaWiki 1.42change 1007640). Lorsque JavaScript est désactivé, des surlignements sur une seule ligne peuvent être créés et ceux existants sautent au bon emplacement, mais le surlignement est manquant. Cependant, les surlignements de plage ne fonctionnent pas du tout, alors envisagez d'utiliser des surlignements sur une seule ligne uniquement pour l'accessibilité si cela est vraiment possible. La valeur de l'attribut est utilisée comme préfixe pour les ancres, afin de distinguer plusieurs blocs de code sur une même page.

def quick_sort(arr):
	less = []
	pivot_list = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass

Cliquez ici pour aller à la ligne 3 et la mettre en surbrillance dans le bloc de code ci-dessus. Cliquez ici pour accéder directement aux lignes 2 à 4 du bloc de code ci-dessus et les mettre en surbrillance.

<syntaxhighlight lang="python" line linelinks="example">
...
</syntaxhighlight>

[[#example-3|...]]
[[#example-2--example-4|...]]

highlight

L'attribut highlight spécifie une ou plusieurs lignes qui doivent être marquées (en mettant en surbrillance ces lignes avec une couleur d'arrière-plan différente). Vous pouvez spécifier plusieurs numéros de lignes séparés par des virgules (par exemple, highlight="1,4,8") ou des intervalles en utilisant deux numéros et un trait d'union (par exemple, highlight="5-7").

La spécification du numéro de ligne ignore toute renumérotation des numéros de ligne affichés avec l'attribut start.
def quick_sort(arr):
    less = []
    pivot_list = []
    more = []
    if len(arr) <= 1:
        return arr

est le résultat de :

<syntaxhighlight lang="python" line start="3" highlight="1,5-7">
...
</syntaxhighlight>

inline

Version de MediaWiki :
1.26

L'attribut indique que le code source doit être intégré dans un paragraphe (par opposition à son propre bloc). (introduit dans 1.26)

L'utilisation du paramètre enclose est obsolète; si elle vaut none, elle doit être remplacée par inline, sinon elle peut être complètement supprimée.
Des sauts de lignes peuvent se produire à tout endroit entre les balises d'ouverture et de fermeture à moins que le code source ne soit marqué non-breakable avec class="nowrap" (sur les wikis qui le prennent en charge; voir ci-dessous) ou style="white-space:nowrap".

Par exemple :

Le lambda x: x * 2 suivant est une lambda expression en Python.

Est le résultat de :

Le <syntaxhighlight lang="python" inline>lambda x: x * 2</syntaxhighlight> suivant est une [[w:Lambda (programming)|lambda expression]] en Python.

class

Lorsque inline est utilisé, class="nowrap" (sur les wikis qui le prennent en charge; pas sur MediaWiki lui-même) spécifie que les sauts de ligne ne doivent pas se produire aux emplacements dans le bloc de code.

Par exemple :

Sans class="nowrap" :

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlambda x: x * 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Avec style="white-space:nowrap" :

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlambda x: x * 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

style

L'attribut style permet d'inclure directement des attributs CSS. Cela équivaut à placer le bloc entre des balises ‎<div> (et non ‎<span>). L'attribut tab‑size ne peut pas être spécifié de cette façon; il nécessite une balise ‎<span> englobante comme décrit ci-dessous sous Avancé.

Par exemple :

def quick_sort(arr):
	less = []
	pivot_list = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass

Est le résultat de :

<syntaxhighlight lang="python" style="border: 3px dashed blue;">
def quick_sort(arr):
	less = []
	pivot_list = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass
</syntaxhighlight>

copy

Version de MediaWiki :
1.43

L'attribut copy ajoute un lien sur le bouton qui copie le contenu dans le presse papier en cliquant dessus.

Cet attribut ne peut pas être utilisé avec l'attribut inline . Si les deux sont spécifiés, copy sera ignoré.

Par exemple :

def quick_sort(arr):
    less = []

Est le résultat de :

<syntaxhighlight lang="python" copy>
def quick_sort(arr):
    less = []
</syntaxhighlight>

Langages pris en charge

‎<syntaxhighlight> utilisant Pygments inclut désormais un lexer natif de wikicode depuis la version 2.15.0.

La bibiothèque Pygments fournit la mise en surbrillance de la syntaxe pour des centaines de langages de programmation et de formats de fichiers via le mécanisme d'analyse des lexers basé sur les expressions régulières.

Généralement, lang utilise la version en minuscules du nom du langage, mais beaucoup d'entre eux ont également des alias appelés noms courts dans la documentation de Pygments; voir les lexers Pygments et SyntaxHighlight.lexers.php.

Les langages qui auparavent étaient supportés par GeSHi ont été réalignés sur les lexters Pygments équivalents, voir SyntaxHighlightGeSHiCompat.php.

En janvier 2020, la liste complète des langages pris en charge par Pygments était :

Langages de programmation

  • ActionScript
  • Ada
  • Agda (y compris le litéral)
  • Alloy
  • AMPL
  • ANTLR
  • APL
  • AppleScript
  • Assemblage (divers)
  • Asymptote
  • Augeas
  • AutoIt
  • Awk
  • BBC Basic
  • Befunge
  • BlitzBasic
  • Boa
  • Boo
  • Boogie
  • BrainFuck
  • C, C++ (y compris les dialectes comme Arduino)
  • C#
  • Chapel
  • Charm++ CI
  • Cirru
  • Clay
  • Clean
  • Clojure
  • CoffeeScript
  • ColdFusion
  • Common Lisp
  • Component Pascal
  • Coq
  • Croc (MiniD)
  • Cryptol (y compris le cryptol littéral)
  • Crystal
  • Cypher
  • Cython
  • D
  • Dart
  • DCPU-16
  • Delphi
  • Dylan (y compris la console)
  • Eiffel
  • Elm
  • Emacs Lisp
  • Email
  • Erlang (y compris les sessions shell)
  • Ezhil
  • Factor
  • Fancy
  • Fantom
  • Fennel
  • FloScript
  • Forth
  • Fortran
  • FreeFEM++
  • F#
  • GAP
  • Gherkin (Cucumber)
  • GLSL shaders
  • Golo
  • Gosu
  • Groovy
  • Haskell (y compris le Haskell littéraire)
  • HLSL
  • HSpec
  • Hy
  • IDL
  • Idris (y compris Idris littéraire)
  • Igor Pro
  • Io
  • Jags
  • Java
  • JavaScript
  • Jasmin
  • Jcl
  • Julia
  • Kotlin
  • Lasso (y compris les modèles)
  • Limbo
  • LiveScript
  • Logtalk
  • Logos
  • Lua
  • Mathematica
  • Matlab
  • Modelica
  • Modula-2
  • Monkey
  • Monte
  • MoonScript
  • Mosel
  • MuPad
  • NASM
  • Nemerle
  • NesC
  • NewLISP
  • Nimrod
  • Nit
  • Notmuch
  • NuSMV
  • Objective-C
  • Objective-J
  • Octave
  • OCaml
  • Opa
  • OpenCOBOL
  • ParaSail
  • Pawn
  • PHP
  • Perl 5
  • Pike
  • Pony
  • PovRay
  • PostScript
  • PowerShell
  • Praat
  • Prolog
  • Python (y compris les sessions de console et les trace-backs)
  • QBasic
  • Racket
  • Raku a.k.a. Perl 6
  • REBOL
  • Red
  • Redcode
  • Rexx
  • Ride
  • Ruby (y compris les sessions irb)
  • Rust
  • S, S-Plus, R
  • Scala
  • Scdoc
  • Scheme
  • Scilab
  • SGF
  • Les scripts (Bash, Tcsh, Fish)
  • Shen
  • Silver
  • Slash
  • Slurm
  • Smalltalk
  • SNOBOL
  • Snowball
  • Solidity
  • SourcePawn
  • Stan
  • Standard ML
  • Stata
  • Swift
  • Swig
  • SuperCollider
  • Tcl
  • Tera Term language
  • TypeScript
  • TypoScript
  • USD
  • Unicon
  • Urbiscript
  • Vala
  • VBScript
  • Verilog, SystemVerilog
  • VHDL
  • Visual Basic.NET
  • Visual FoxPro
  • Whiley
  • Xtend
  • XQuery
  • Zeek
  • Zephir
  • Zig

Langages des modèles

  • Modèles angular
  • Modèles Cheetah
  • ColdFusion
  • Modèles Django / Jinja
  • ERV (modèles Ruby)
  • Evoque
  • Genshi (langage du modèle Trac)
  • Barres de saisie
  • JSP (pages de serveur Java)
  • Liquid
  • Myghty (framework basé sur HTML::Mason)
  • Mako (successeur de Myghty)
  • Slim
  • Modèles intelligents (modèles PHP)
  • Tea
  • Twig

Autres balisages

  • Fichiers de configuration Apache
  • Apache Pig
  • BBCode
  • CapDL
  • Cap'n Proto
  • CMake
  • partitions Csound
  • CSS
  • Fichiers de contrôle Debian
  • Différences de fichiers
  • Dockerfiles
  • DTD
  • EBNF
  • En-têtes de courrier électronique
  • Extempore
  • Flatline
  • catalogues Gettext
  • Script Gnuplot
  • Marquage Groff
  • Hexdump
  • HTML
  • Sessions HTTP
  • IDL
  • Inform
  • Fichiers de configuration de style INI
  • Journaux IRC (style irssi)
  • Isabelle
  • Notation de la JSGF
  • JSON, JSON-LD
  • Prouver le théorème de Lean
  • Fichiers de configuration de lighttpd
  • Journal du noyau Linux (dmesg)
  • Assembleur LLVM
  • Scripts LSL
  • Makefiles
  • Marquage MoinMoin/Trac Wiki
  • MQL
  • MySQL
  • Langage de commande NCAR
  • Fichiers de configuration Nginx
  • langage Nix
  • Scripts NSIS
  • Notmuch
  • Scènes POV-Ray
  • Puppet
  • QML
  • Ragel
  • Redcode
  • ReST
  • Roboconf
  • Robot Framework
  • Fichiers de spécifications RPM
  • Rql
  • RSL
  • Scdoc
  • SPARQL
  • SQL, aussi MySQL, SQLite
  • configuration Squid
  • TADS 3
  • Terraform
  • TeX
  • Thrift
  • TOML
  • grammaires Treetop
  • USD (Universal Scene Description)
  • configurations Varnish
  • VGL
  • Vim Script
  • WDiff
  • Fichiers batch Windows
  • XML
  • XSLT
  • YAML
  • Fichiers du registre Windows
Depuis MediaWiki 1.37 d'autres lexers ont été ajoutés avec la mise à jour de pygments vers la version 2.10.0 comme détaillé avec T280117.
  • ansys
  • apdl
  • asc
  • gcode
  • golang === go
  • gsql
  • jslt
  • julia-repl
  • kuin
  • meson
  • nestedtext
  • nodejsrepl
  • nt
  • omg-idl
  • output
  • pem
  • procfile
  • pwsh
  • smithy
  • teal
  • thingsdb
  • ti
  • wast
  • wat

Lexers précédemment supportés par GeSHi

Vous trouverez ci-dessous une liste partielle des langages que GeSHi pouvait mettre en surbrillance, avec les langages (barrés) qui ne sont plus pris en charge après le passage vers Pygments.

Lexers précédemment supportés par GeSHi
Code Langage
4cs GADV 4CS
6502acme MOS 6502 (6510) ACME Cross Assembler
6502kickass MOS 6502 (6510) Kick Assembler
6502tasm MOS 6502 (6510) TASM/64TASS
68000devpac Motorola 68000 - HiSoft Devpac ST 2 Assembler
abap ABAP
actionscript ActionScript
actionscript3 ActionScript3
ada Ada
algol68 ALGOL 68
apache Apache Configuration
applescript AppleScript
apt_sources Apt sources
arm ARM Assembler
asm Assembly
asp Active Server Pages (ASP)
asymptote Asymptote
autoconf Autoconf
autohotkey AutoHotkey
autoit AutoIt
avisynth AviSynth
awk AWK
bascomavr BASCOM AVR
bash Bash
basic4gl Basic4GL
bf Brainfuck
bibtex BibTeX
blitzbasic Blitz BASIC
bnf Backus–Naur Form
boo Boo
c C
c_loadrunner C Loadrunner
c_mac C (Mac)
caddcl AutoCAD DCL
cadlisp AutoLISP
cfdg CFDG
cfm ColdFusion Markup Language
chaiscript ChaiScript
cil Common Intermediate Language (CIL)
clojure Clojure
cmake CMake
cobol COBOL
coffeescript CoffeeScript
cpp C++
cpp-qt C++ (Qt toolkit)
csh C shell
csharp C#
css Cascading Style Sheets (CSS)
cuesheet Cue sheet
d D
dart Dart
dcl Data Control Language
dcpu16 DCPU-16
dcs Data Conversion System
delphi Delphi
diff Diff
div DIV
dosbatch DOS batch file
dot DOT
e E
ebnf Extended Backus–Naur Form
ecmascript ECMAScript
eiffel Eiffel
email Email (mbox / eml / RFC format)
epc Enerscript
erlang Erlang
euphoria Euphoria
f1 Formula One
falcon Falcon
fo FO
fortran Fortran
freebasic FreeBASIC
freeswitch FreeSWITCH
fsharp Fsharp
gambas Gambas
gdb GDB
genero Genero
genie Genie
gettext gettext
glsl OpenGL Shading Language (GLSL)
gml Game Maker Language (GML)
gnuplot gnuplot
go Go
groovy Groovy
gwbasic GW-BASIC
haskell Haskell
haxe Haxe
hicest HicEst
hq9plus HQ9+
html4strict HTML (use "html" instead)
html5 HTML5 (use "html" instead)
icon Icon
idl Uno IDL
ini INI
inno Inno
intercal INTERCAL
io Io
j J
java Java
java5 Java(TM) 2 Platform Standard Edition 5.0
javascript JavaScript
jquery jQuery
kixtart KiXtart
klonec Klone C
klonecpp Klone C++
kotlin Kotlin
ksh Korn shell
latex LaTeX
lb Liberty BASIC
ldif LDAP Data Interchange Format
lisp Lisp
llvm LLVM
locobasic Locomotive BASIC
logtalk Logtalk
lolcode LOLCODE
lotusformulas Formula language
lotusscript LotusScript
lscript LightWave 3D
lsl2 Linden Scripting Language
lua Lua
magiksf Magik
m68k Motorola 68000 Assembler
make make
mapbasic MapBasic
matlab MATLAB M
mirc mIRC scripting language
mmix MMIX
modula2 Modula-2
modula3 Modula-3
mpasm Microchip Assembler
mxml MXML
mysql MySQL
nagios Nagios
netrexx NetRexx
newlisp NewLISP
nsis Nullsoft Scriptable Install System (NSIS)
oberon2 Oberon-2
objc Objective-C
objeck Objeck
ocaml OCaml
ocaml-brief OCaml
octave Octave
oobas LibreOffice/OpenOffice.org Basic
oorexx Object REXX
oracle11 Oracle 11 SQL
oracle8 Oracle 8 SQL
oxygene Oxygene
oz Oz
parasail ParaSail
parigp PARI/GP
pascal Pascal
pcre Perl Compatible Regular Expressions
per per
perlpl
Perl
perl6
pl6
raku
Perl 6
pf PF
php PHP
php-brief PHP ((obsolète depuis v. phab:T94292) – no colors, odd framing)
pic16 PIC assembly language
pike Pike
pixelbender Pixel Bender
pli PL/I
plsql PL/SQL
postgresql PostgreSQL
postscript PostScript
povray Persistence of Vision Raytracer
powerbuilder PowerBuilder
powershell Windows PowerShell
proftpd ProFTPD
progress OpenEdge Advanced Business Language
prolog Prolog
properties Properties file
providex ProvideX
purebasic PureBasic
pycon Python
pys60 PyS60
python
py
python3
py3
Python
python2
py2
Python 2
q Q
qbasic QBasic/QuickBASIC
rails Rails
rebol Rebol
reg Windows Registry
rexx Rexx
robots robots.txt
rpmspec RPM Spec files
rsplus R
ruby Ruby
sas SAS
scala Scala
scheme Scheme
sh
shell
shell-session
Shell Script (POSIX)
scilab Scilab
sdlbasic SdlBasic
smalltalk Smalltalk
smarty Smarty
spark SPARK
sparql SPARQL
sql SQL
stonescript StoneScript (langage de script pour ShiVa3D)
systemverilog SystemVerilog
tcsh Tcsh
tcl Tcl
teraterm Tera Term
text Plain text
thinbasic thinBasic
ts TypeScript
tsql Transact-SQL
typoscript TypoScript
unicon Unicon
upc Unified Parallel C
urbi URBI
uscript UnrealScript
vala Vala
vb Visual Basic
vbnet Visual Basic .NET
vedit VEDIT
verilog Verilog
vhdl VHDL
vim Vim script
visualfoxpro Visual FoxPro
visualprolog Visual Prolog
whitespace Whitespace
whois Whois
winbatch Winbatch
xml XML
xorg_conf Xorg.conf
yaml YAML
xpp Microsoft Dynamics AX
z80 ZiLOG Z80 Assembler
zxbasic ZXBasic

Installation

Cette extension est fournie avec MediaWiki 1.21 et supérieur. Les instructions de configuration restantes doivent encore être suivies.
Malgré sa mise à jour vers Pygments (et loin de GeSHi) et malgré son nom mis à jour, cette extension utilise toujours les anciens noms de fichiers comme indiqué ci-dessous.
  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé SyntaxHighlight_GeSHi dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi
    
  • Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant composer install --no-dev après vous être positionné dans le répertoire de l'extension. (Voir T173141 pour des complications potentielles.)
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'SyntaxHighlight_GeSHi' );
    
  • Sous Linux, définir les autorisations d'exécution pour le binaire pygmentize. Vous pouvez utiliser un client FTP ou la commande shell suivante pour le faire :
chmod a+x /path/to/extensions/SyntaxHighlight_GeSHi/pygments/pygmentize
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.


Installer Vagrant :

  • Si vous utilisez Vagrant , installez avec vagrant roles enable syntaxhighlight --provision
Lors de l'installation à partir de Git, veuillez noter qu'à partir de MediaWiki 1.26 et jusqu'à MediaWiki 1.31 inclus, cette extension nécessite Composer.

Ainsi, après l'installation depuis Git, accédez au répertoire contenant l'extension, par exemple "../extensions/SyntaxHighlight_GeSHi/" et exécutez composer install --no-dev, ou lors de la mise à jour : composer update --no-dev.

Alternativement et de préférence, ajoutez la ligne "extensions/SyntaxHighlight_GeSHi/composer.json" au fichier composer.local.json dans le répertoire racine de votre wiki comme par exemple
{
	"extra": {
		"merge-plugin": {
			"include": [
				"extensions/SyntaxHighlight_GeSHi/composer.json"
			]
		}
	}
}
Maintenant, exécutez composer update --no-dev. Voilà!
Avertissement Avertissement : Lors du téléversement de l'extension via FTP, assurez-vous de télécharger le fichier pygments/pygmentize avec le type de transfert binaire.

Configuration

$wgSyntaxHighlightMaxLines, $wgSyntaxHighlightMaxBytes optionnel Pour des raisons de performances, les blobs ou les pages (JS, Lua et CSS) plus grandes que ces valeurs, ne seront pas mises en surbrillance. (introduit dans 1.40)
Linux
$wgPygmentizePath optionnel chemin absolu vers pygmentize du package Pygments. L'extension regroupe le package Pygments et $wgPygmentizePath pointe vers la version fournie par défaut, mais vous pouvez pointer vers une version différente, si vous le souhaitez. Par exemple : $wgPygmentizePath = "/usr/local/bin/pygmentize";.
Windows
  • Si vous hébergez votre MediaWiki sur une machine Windows, vous devez définir le chemin pour $wgPygmentizePath = "c:\\Python27\\Scripts\\pygmentize.exe"; Pygmentize.exe
    • S'il n'y a pas de binaire pygmentize.exe, exécutez easy_install Pygments depuis la ligne de commande dans le dossier Scripts pour générer le fichier.

Si vous utilisez le binaire pygmentize fourni (extensions/SyntaxHighlight_GeSHi/pygments/pygmentize), assurez-vous que votre serveur web est autorisé à l'exécuter. Si votre hôte ne vous permet pas d'ajouter des exécutables à votre répertoire web, installez python-pygments et ajoutez $wgPygmentizePath = pygmentize à LocalSettings.php.

Dépannage

Après avoir mis à jour vers MediaWiki v1.26 ou plus récent, certains utilisateurs ont commencé à signaler des problèmes avec l'extension. Il pourrait exister des cas où certains langages tels que "Lua", pourraient ne pas être mis en surbrillance et en activant le debogging, MediaWiki renverrait l'erreur Notice: Failed to invoke Pygments: /usr/bin/env: python3: No such file or directory.

  • Essayez de faire pointer $wgPygmentizePath dans LocalSettings.php vers un binaire pygmentize externe.
  • Dans les environnements d'hébergement partagé avec cPanel, cela peut être fait en configurant une nouvelle application Python via le menu "Configurer Python App", et en activant l'environnement virtuel de l'application via SSH (source /virtualenv/python/3.5/bin/activate). Après cela, le module Pygments peut être ajouté à l'application Python, pour cela allez au chemin de l'environnement virtuel (cd virtualenv/python/3.5/bin/), téléchargez et installez Pygments (./pip install Pygments) puis activez le module en ajoutant "Pygments" sous la section "Applications existantes" du menu "Configuration d'application Python". Cela créera le fichier requis sur le chemin : virtualenv/python/3.5/bin/pygmentize
  • Voir phab:T128993 sur ce sujet pour plus de suggestions et d'informations.
  • SELinux peut également empêcher l'extension de s'exécuter avec une erreur similaire à type=AVC msg=audit(1609598265.169:225924): avc: denied { execute } for pid=2360888 comm="bash" name="pygmentize" dev="dm-0" ino=50814399 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_user_content_t:s0 tclass=file permissive=0 dans votre audit.log. Cela peut être autorisé avec setsebool -P httpd_unified 1
  • Dans les versions antérieures de cette extension, Windows échouait parfois avec une erreur _Py_HashRandomization_Init. Il s'agissait d'un bogue avec l'environnement Windows qui n'était pas transmis aux exécutions Python. Un correctif a été publié dans la version 1.40, avec des rétroportages vers les versions 1.38 et 1.39.

Intégration de VisualEditor

Le greffon permet l'édition directe avec VisualEditor. Une fenêtre contextuelle est ouverte lorsqu'un utilisateur souhaite modifier les sections syntaxhighlight . Pour que cela fonctionne, VisualEditor doit être installé et configuré à partir de la dernière version de Git, la même chose pour Parsoid. La fonctionnalité peut ne pas fonctionner avec les versions plus anciennes de Parsoid. Voir Extension:SyntaxHighlight/VisualEditor pour les détails.

Utilisation avec MediaWiki-Docker

Voir MediaWiki-Docker/Extension/SyntaxHighlight pour les instructions sur la configuration d'un environnement MediaWiki-Docker pour l'utilisation, le développement et le test de SyntaxHighlight.

Utilisation avancée

  • Contrairement aux balises ‎<pre> et ‎<code>, les entités de caractères HTML telles que &nbsp; n'ont pas besoin (et ne doivent pas) contenir le caractère & échappé sous la forme &amp;.
  • Comme la balise ‎<pre> mais contrairement à la balise ‎<code>, les balises dans la plage (autres que sa propre balise de fermeture) n'ont pas besoin d'avoir le symbole < échappé comme &lt;, et le Wikitexte n'a pas besoin non plus d'être échappé avec une balise ‎<nowiki>.
  • De plus, alors que ‎<pre> suppose des tabulations tous les 8 caractères et rend les tabulations en utilisant des espaces réels lorsque le texte rendu est copié, ‎<syntaxhighlight> utilise des tabulations à 4 espaces (sauf Internet Explorer, qui en utilise 8) et préserve les caractères de tabulation dans le texte rendu.
    • La largeur de la tabulation pour ‎<syntaxhighlight> peut être modifiée en utilisant une balise ‎<span style=""> incluse qui spécifie le tab-size (son propre attribut style ne peut pas être utilisé pour définir la tabulation, et ‎<div> ne peut pas être utilisé à la place) : ‎<span style="-moz-tab-size: nn; -o-tab-size: nn; tab-size: nn;">
    • Le préfixe -moz- est nécessaire pour Firefox (de la version 4.0 à la version 90), et le préfixe de -o- est nécessaire pour Opera (de la versions 10.60 à la version 15).[4]
La boîte d'édition du wiki suppose une tabulation de 8 espaces. Ceci ne s'applique qu'aux pages enregistrées réelles; les prévisualisations générées par une boîte d'édition ou Special:ExpandTemplates peuvent différer.

Voir aussi

Notes

  1. Voir le sujet problème de syntaxhighlight avec du code transclus
  2. phab:T104109#3879800
  3. le lexer permet de découper la source en fragments possédant un type particulier qui détermine ce que le texte représente sémantiquement (par exemple un mot-clé, une chaîne de caractères, un commentaire). Il existe un lexer par langage ou format de balisage pris en charge par Pygments. Voir https://pygments.org/docs/quickstart/
  4. devmo:Web/CSS/tab-size