Extension:SyntaxHighlight
De Mi caja de notas
Une extension de MediaWiki pour mettre en valeur le code source.
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
- 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.
É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 |
|
|
<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>
linelinks
| 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.42 • change 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.
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").
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)
none, elle doit être remplacée par inline, sinon elle peut être complètement supprimée.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.
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
- 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
- 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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Installation
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
SyntaxHighlight_GeSHidans votre dossierextensions/.
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-devaprè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
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
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"
]
}
}
}
composer update --no-dev. Voilà!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écutezeasy_install Pygmentsdepuis la ligne de commande dans le dossierScriptspour générer le fichier.
- S'il n'y a pas de binaire
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
$wgPygmentizePathdansLocalSettings.phpvers 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
- 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 (
- 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=0dans votre audit.log. Cela peut être autorisé avecsetsebool -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 n'ont pas besoin (et ne doivent pas) contenir le caractère&échappé sous la forme&. - 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<, 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 letab-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 largeur de la tabulation pour
Voir aussi
- Instructions sur la mise à jour de la version de pygments utilisée par SyntaxHighlight
- Instructions pour configurer SyntaxHighlight dans un environnement de développement MediaWiki-Docker
- Pygments – met en surbrillance la syntaxe Python
- Extensions dépendantes de celle-ci :
- Extension:SyntaxHighlightPages – met en surbrillance les pages en fonction des suffixes de titre.
- Extensions alternatives :
- Extension:Highlightjs Integration – met en surbrillance la syntaxe en utilisant la bibliothèque HighlightJS (inclut la prise en charge de certains langages manquants dans les Pygments, comme Maxima).
- Extension:ExternalContent – intégrez du contenu externe, tel que du code provenant de GitHub, GitLab et des dépôts Bitkeeper avec rendu automatique des fichiers Markdown ; et utilisez la coloration syntaxique via la bibliothèque Prism.js pour près de 300 langages pris en charge. Contenu indexé par CirrusSearch
Notes
- ↑ Voir le sujet problème de syntaxhighlight avec du code transclus
- ↑ phab:T104109#3879800
- ↑ 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/
- ↑ devmo:Web/CSS/tab-size
| Cette extension est utilisée par au moins un des projets Wikimédia. Cela signifie probablement que l’extension est assez stable et fonctionnelle pour être utilisée sur des sites à fort trafic. Recherchez le nom de cette extension dans le CommonSettings.php de Wikimédia et dans le fichier de configuration InitialiseSettings.php pour situer les endroits où elle est installée. Une liste complète des extensions installées sur un Wiki donné peut être visualisée sur la page Special:Version de ce wiki. |
| Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : |
