Extension:SyntaxHighlight/de

Diese Erweiterung ist in MediaWiki 1.21 und darüber enthalten. Daher muss sie nicht erneut heruntergeladen werden. Allerdings müssen die folgenden Anweisungen trotzdem beachtet werden.
Category:Extensions bundled with MediaWiki 1.21/de
Zum Hervorheben von Syntax in Wikitext bei Verwendung des Source-Editors siehe die CodeMirror -Erweiterung oder die Benutzerskripts von Remember the dot und Cacycle.
Category:GPL licensed extensions/de
MediaWiki-Erweiterungen
SyntaxHighlight
Freigabestatus: stabilCategory:Stable extensions/de
Einbindung Tag Category:Tag extensions/de
Beschreibung Erlaubt die Hervorhebung von Syntax eines Quellcodes auf Wikiseiten
Autor(en)
Letzte Version Laufende Aktualisierungen
Kompatibilitätspolitik Der Master behält die Abwärtskompatibilität bei.
MediaWiki 1.25+Category:Extensions with manual MediaWiki version
Datenbankänderungen Nein
Lizenz GNU General Public License 2.0 oder neuer
Herunterladen Category:Extensions in Wikimedia version control/de
README
  • $wgPygmentizePath
  • $wgSyntaxHighlightMaxLines
  • $wgSyntaxHighlightMaxBytes
<syntaxhighlight>
Public wikis using 11,760 (Ranked 8th)
Übersetze die SyntaxHighlight-Erweiterung
Probleme Offene Aufgaben · Einen Fehler melden
Category:All extensions/de

Die SyntaxHighlight-Erweiterung, früher bekannt als SyntaxHighlight_GeSHi, stellt reiche Formatierung von Quellcode bei der Verwendung des Tags <syntaxhighlight> bereit. Sie wird von der Library Pygments angetrieben und unterstützt Hunderte von Programmiersprachen und Dateiformaten.

Genau wie die Tags <pre> und <poem> wird der Text genau so dargestellt, wie er getippt wurde und bewahrt so jegliche Leerzeichen.

The SyntaxHighlight extension does not work on wiki installations hardened using Hardened-PHP due to the lack of proc_open, shell_exec and other functions. Siehe T250763.

Der <syntaxhighlight>-Tag ist seit 1.39 für 5.000 oder eine andere extreme Anzahl von Syntaxhighlight-Tags auf einer einzigen Seite, wie z.B. bei Wikibooks, belastend geworden. Erhöhe in Extremfällen den Timeout-Wert des Webservers in der Umgebung. (Siehe T316858.)

Verwendung

Einmal installiert, kann man den "syntaxhighlight"-Tag auf Wikiseiten verwenden. Zum Beispiel

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

ist das Ergebnis des folgenden Wikitext-Markups:

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

In älteren Versionen (vor MediaWiki 1.16) benutzte die Erweiterung den Tag <source>. Dieser wird noch immer unterstützt, jedoch hilft <syntaxhighlight> Konflikte zu vermeiden.

Gestaltung

Wenn der angezeigte Code zu groß ist, kann dieser angepasst werden, indem folgendes in die MediaWiki:Common.css Seite in Ihrem Wiki getan wird (wenn diese nicht existiert, muss sie erzeugt werden):

/* CSS, welches hier platziert wird, beeinflusst jedes Aussehen */
.mw-highlight pre {
	font-size: 90%;
}

Um Codeblocks in Kanten einzuschließen, muss eine Zeile wie border: 1px dashed blue; in die Sektion oben eingefügt werden. Kontrolle über die verwendete Schriftartfamilie kann durch Einfügen einer Zeile wie font-family: "Courier New", monospace; in die obere Sektion ausgeübt werden.

Kategorie für Syntaxhervorhebungsfehler

Die Erweiterung fügt Seiten, die ein fehlerhaftes lang-Attribut in einem <syntaxhighlight>-Tag haben zu einer tracking category hinzu. Der Nachrichtenschlüssel MediaWiki:syntaxhighlight-error-category bestimmt den Kategorienamen; auf diesem Wiki ist das Category:Pages with syntax highlighting errors.

Der häufigste Fehler, der dazu führt, dass Seiten zu dieser Kategorie hinzugefügt werden ist ein <syntaxhighlight> Tag ganz ohne lang Attribut, da ältere Versionen dieser Erweiterung die Definition von $wgSyntaxHighlightDefaultLang unterstützten. Diese können üblicherweise entweder durch <pre> ersetzt werden oder $bash oder lang="text" kann zum Tag hinzugefügt werden.

Die Kategorie kann auch zugewiesen werden und der Inhalt nicht hervorgehoben werden, wenn der Text länger als 1000 Zeilen oder größer als 100 kB ist.[1]

Parameter

lang

Das lang="name" Attribut definiert, welcher Lexer verwendet werden soll. Die Auswahl der Sprache beeinflusst, wie der Quellcode hervorgehoben wird. Details zu unterstützten Sprachen finden sich im Abschnitt Unterstützte Sprachen.

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

Wenn ein ungültiger oder unbekannter Name verwendet wird, wird die Seite der Wartungskategorie zugeordnet. Für Details siehe den Abschnitt Kategorie mit Syntaxhervorhebungsfehlern.

line

Das line Attribut aktiviert Zeilennummern.

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

start

Das start Attribut (in Kombination mit line) definiert die erste Zeilennummer des Codeblocks. Zum Beispiel bewirkt line start="55" hier, dass die Nummerierung bei der Zahl 55 beginnt.

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

The linelinks attribute (in combination with line) adds link anchors to each line of the code block. You can click on the line numbers to get a link that highlights the selected line, and use them in internal and external links. You can also hold ⇧ Shift and click on another line number to get a link that highlights the selected range of lines (Seit MediaWiki 1.42 change 1007640). When JavaScript is disabled, single-line highlights can be created and existing ones jump to the right location, but the highlight is missing; however, range highlights don’t work at all, so consider using single-line highlights only for accessibility if meaningfully possible. The value of the attribute is used as a prefix for the anchors, to distinguish multiple code blocks on one page.

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

Click here to jump to and highlight line 3 in the code block above. Click here to jump to and highlight lines 2-4 in the code block above.

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

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

highlight

Das highlight-Attribut definiert eine oder mehr Zeilen, die markiert werden sollen (indem diese Zeilen mit einer anderen Hintergrundfarbe hervorgehoben werden). Man kann mehrere Zeilennummern kommasepariert (zum Beispiel highlight="1,4,8") angeben oder Bereiche, indem man zwei Zeilennummern mit einem Bindestrich angibt (zum Beispiel highlight="5-7").

Die Angabe der Zeilennummer ignoriert eine eventuelle Umnummerierung der angezeigten Zeilennummern mit dem Attribut start.
def quick_sort(arr):
    less = []
    pivot_list = []
    more = []
    if len(arr) <= 1:
        return arr

ist das Ergebnis von

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

inline

MediaWiki Version:
1.26

Das Attribut weist darauf hin, dass der Quellcode Fließtext als Teil des Paragraphen sein soll (statt ein eigener Block zu sein). Diese Option ist ab MediaWiki 1.26 verfügbar.

Die Verwendung des Parameters „enclose“ ist veraltet; wenn er auf none gesetzt ist, sollte er durch inline ersetzt werden; andernfalls kann er ganz entfernt werden.
Zeilenumbrüche können an jeder beliebigen Stelle zwischen dem öffnenden und dem schließenden Tag vorkommen, es sei denn, der Quelltext ist mit class="nowrap" (in den Wikis, die dies unterstützen; siehe unten) oder style="white-space:nowrap" als nicht umbrechend markiert.

Zum Beispiel:

Der folgende lambda x: x * 2 ist ein Lambdra-Ausdruck in Python.

ist das Ergebnis von:

Der folgende <syntaxhighlight lang="python" inline>lambda x: x * 2</syntaxhighlight> ist ein [[w:Lambda (programming)|Lambda-Ausdruck]] in Python.

class

Wenn inline benutzt wird, bewirkt class="nowrap" (auf Wikis, die es unterstützen; nicht auf MediaWiki selbst), dass keine Zeilenumbrücke bei Leerzeichen innerhalb des Codeblocks auftreten sollten.

Zum Beispiel:

Ohne class="nowrap":

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlambda x: x * 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Mit style="white-space:nowrap":

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlambda x: x * 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

style

Das style-Attribut erlaubt es, CSS-Atribute direkt einzubinden. Das ist das Gleiche, wie den Block in ein <div>-(nicht <span>-)Tag einzuschließen. Das tab‑size-Attribut kann nicht auf diese Weise gesetzt werden; es benötigt ein umschließendes <span>-Tag, so wie unter Advanced beschrieben.

Zum Beispiel:

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

ist das Ergebnis von:

<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

MediaWiki Version:
1.43

The copy attribute adds a button link that copies the content to the clipboard when clicked.

This attribute cannot be used together with the inline attribute. If both are specified, copy will be ignored.

For example:

def quick_sort(arr):
    less = []

Is the result of:

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

Unterstützte Sprachen

Die Pygments-Bibliothek bietet Unterstützung für hunderte von Programmiersprachen und Dateiformaten, mit Hilfe der verschiedenen „Lexer“, die in der Bibliothek enthalten sind.

In den meisten Fällen wird für das Attribut lang=, das mit dieser Erweiterung verwendet wird, der Namen der Sprache kleingeschrieben. Viele haben jedoch Aliase oder „Abkürzungen“, wie sie in der Pygments-Dokumentation aufgeführt sind; siehe „Verfügbare Lexer“ für weitere Details.

Einige Sprachen, die zuvor von GeSHi unterstützt wurden, sind nun auf Pygments-Lexer umgestellt; siehe für Details SyntaxHighlightGeSHiCompat.php.

Pygments bietet seit April 2023 einen „wikitext“-Lexer an. In älteren Versionen kann stattdessen „html+handlebars“ oder „moin“ verwendet werden.

Die vollständige Liste der Sprachen, die von Pygments unterstützt werden (Stand Januar 2020):

Programmiersprachen

  • ActionScript
  • Ada
  • Agda (inkl. literate)
  • Alloy
  • AMPL
  • ANTLR
  • APL
  • AppleScript
  • Assembly (verschiedene)
  • Asymptote
  • Augeas
  • AutoIt
  • Awk
  • BBC Basic
  • Befunge
  • BlitzBasic
  • Boa
  • Boo
  • Boogie
  • BrainFuck
  • C, C++ (inkl. Dialekte wie Arduino)
  • C#
  • Chapel
  • Charm++ CI
  • Cirru
  • Clay
  • Clean
  • Clojure
  • CoffeeScript
  • ColdFusion
  • Common Lisp
  • Component Pascal
  • Coq
  • Croc (MiniD)
  • Cryptol (inkl. Literate Cryptol)
  • Crystal
  • Cypher
  • Cython
  • D
  • Dart
  • DCPU-16
  • Delphi
  • Dylan (inkl. console)
  • Eiffel
  • Elm
  • Emacs Lisp
  • Email
  • Erlang (inkl. Shell-Sitzungen)
  • Ezhil
  • Factor
  • Fancy
  • Fantom
  • Fennel
  • FloScript
  • Forth
  • Fortran
  • FreeFEM++
  • F#
  • GAP
  • Gherkin (Cucumber)
  • GLSL Shader
  • Golo
  • Gosu
  • Groovy
  • Haskell (inkl. Literate Haskell)
  • HLSL
  • HSpec
  • Hy
  • IDL
  • Idris (inkl. Literate Idris)
  • Igor Pro
  • Io
  • Jags
  • Java
  • JavaScript
  • Jasmin
  • Jcl
  • Julia
  • Kotlin
  • Lasso (inkl. templating)
  • 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 (inkl. Konsolensitzungen und Tracebacks)
  • QBasic
  • Racket
  • Raku a.k.a. Perl 6
  • REBOL
  • Red
  • Redcode
  • Rexx
  • Ride
  • Ruby (inkl. irb sessions)
  • Rust
  • S, S-Plus, R
  • Scala
  • Scdoc
  • Scheme
  • Scilab
  • SGF
  • Shell-Skripte (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

Template-Sprachen

  • Angular Templates
  • Cheetah Templats
  • ColdFusion
  • Django/Jinja Templates
  • ERB (Ruby templating)
  • Evoque
  • Genshi (die Trac Template Language)
  • Handlebars
  • JSP (Java Server Pages)
  • Liquid
  • Myghty (das HTML::Mason basierte Framework)
  • Mako (der Nachfolger von Myghty)
  • Slim
  • Smarty Templates (PHP templating)
  • Tea
  • Twig

Andere Markup-Sprachen

  • Apache Konfigurationsdateien
  • Apache Pig
  • BBCode
  • CapDL
  • Cap'n Proto
  • CMake
  • Csound Partituren
  • CSS
  • Debian Kontrolldateien
  • Diff-Dateien
  • Dockerfiles
  • DTD
  • EBNF
  • E-Mail Kopfzeilen
  • Extempore
  • Flatline
  • Gettext-Kataloge
  • Gnuplot-Skript
  • Groff-Markup
  • Hexdumps
  • HTML
  • HTTP-Sitzungen
  • IDL
  • Inform
  • INI-style Konfigurationsdateien
  • IRC logs (irssi-Style)
  • Isabelle
  • JSGF-Notation
  • JSON, JSON-LD
  • Lean theorem prover
  • Lighttpd Konfigurationsdateien
  • Linux Kernel logs (dmesg)
  • LLVM assembly
  • LSL-Skripte
  • Makefiles
  • MoinMoin/Trac Wiki Markup
  • MQL
  • MySQL
  • NCAR Befehlssprache
  • Nginx Konfigurationsdateien
  • Nix-Sprache
  • NSIS-Skripte
  • Notmuch
  • POV-Ray-Szenen
  • Puppet
  • QML
  • Ragel
  • Redcode
  • ReST
  • Roboconf
  • Robot Framework
  • RPM spec-Dateien
  • Rql
  • RSL
  • Scdoc
  • SPARQL
  • SQL, auch MySQL, SQLite
  • Squid-Konfiguration
  • TADS 3
  • Terraform
  • TeX
  • Thrift
  • TOML
  • Treetop-Grammatiken
  • USD (Universal Scene Description)
  • Varnish-Configs
  • VGL
  • Vim Script
  • WDiff
  • Windows-Batch-Dateien
  • XML
  • XSLT
  • YAML
  • Windows Registry-Dateien
Seit MediaWiki 1.37 wurden mit dem Update von Pygments auf Version 2.10.0 weitere Lexer hinzugefügt, wie in T280117 beschrieben.
  • 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

Bisher von GeSHi unterstützte Lexer

Anschließend folgt eine unvollständige Liste mit Sprachen, die GeSHi hervorheben konnte. Sprachen, die seit der Umstellung auf Pygments nicht mehr unterstützt werden, sind durchgestrichen.

Bisher von GeSHi unterstützte Lexer
Code Sprache
4csGADV 4CS
6502acmeMOS 6502 (6510) ACME Cross Assembler
6502kickassMOS 6502 (6510) Kick Assembler
6502tasmMOS 6502 (6510) TASM/64TASS
68000devpacMotorola 68000 - HiSoft Devpac ST 2 Assembler
abapABAP
actionscriptActionScript
actionscript3ActionScript3
adaAda
algol68ALGOL 68
apacheApache Configuration
applescriptAppleScript
apt_sourcesApt sources
armARM Assembler
asmAssembly
aspActive Server Pages (ASP)
asymptoteAsymptote
autoconfAutoconf
autohotkeyAutoHotkey
autoitAutoIt
avisynthAviSynth
awkAWK
bascomavrBASCOM AVR
bashBash
basic4glBasic4GL
bfBrainfuck
bibtexBibTeX
blitzbasicBlitz BASIC
bnfBackus–Naur Form
booBoo
cC
c_loadrunnerC Loadrunner
c_macC (Mac)
caddclAutoCAD DCL
cadlispAutoLISP
cfdgCFDG
cfmColdFusion Markup Language
chaiscriptChaiScript
cilCommon Intermediate Language (CIL)
clojureClojure
cmakeCMake
cobolCOBOL
coffeescriptCoffeeScript
cppC++
cpp-qtC++ (Qt toolkit)
cshC shell
csharpC#
cssCascading Style Sheets (CSS)
cuesheetCue sheet
dD
dartDart
dclData Control Language
dcpu16DCPU-16
dcsData Conversion System
delphiDelphi
diffDiff
divDIV
dosbatchDOS batch file
dotDOT
eE
ebnfExtended Backus–Naur Form
ecmascriptECMAScript
eiffelEiffel
emailEmail (mbox \ eml \ RFC format)
epcEnerscript
erlangErlang
euphoriaEuphoria
f1Formula One
falconFalcon
foFO
fortranFortran
freebasicFreeBASIC
freeswitchFreeSWITCH
fsharpFsharp
gambasGambas
gdbGDB
generoGenero
genieGenie
gettextgettext
glslOpenGL Shading Language (GLSL)
gmlGame Maker Language (GML)
gnuplotgnuplot
goGo
groovyGroovy
gwbasicGW-BASIC
haskellHaskell
haxeHaxe
hicestHicEst
hq9plusHQ9+
html4strictHTML (use "html" instead)
html5HTML5 (use "html" instead)
iconIcon
idlUno IDL
iniINI
innoInno
intercalINTERCAL
ioIo
jJ
javaJava
java5Java(TM) 2 Platform Standard Edition 5.0
javascriptJavaScript
jqueryjQuery
kixtartKiXtart
klonecKlone C
klonecppKlone C++
kotlinKotlin
kshKorn shell
latexLaTeX
lbLiberty BASIC
ldifLDAP Data Interchange Format
lispLisp
llvmLLVM
locobasicLocomotive BASIC
logtalkLogtalk
lolcodeLOLCODE
lotusformulasFormula language
lotusscriptLotusScript
lscriptLightWave 3D
lsl2Linden Scripting Language
luaLua
magiksfMagik
m68kMotorola 68000 Assembler
makemake
mapbasicMapBasic
matlabMATLAB M
mircmIRC scripting language
mmixMMIX
modula2Modula-2
modula3Modula-3
mpasmMicrochip Assembler
mxmlMXML
mysqlMySQL
nagiosNagios
netrexxNetRexx
newlispNewLISP
nsisNullsoft Scriptable Install System (NSIS)
oberon2Oberon-2
objcObjective-C
objeckObjeck
ocamlOCaml
ocaml-briefOCaml
octaveOctave
oobasLibreOffice/OpenOffice.org Basic
oorexxObject REXX
oracle11Oracle 11 SQL
oracle8Oracle 8 SQL
oxygeneOxygene
ozOz
parasailParaSail
parigpPARI/GP
pascalPascal
pcrePerl Compatible Regular Expressions
perper
perlpl
Perl
perl6
pl6
raku
Perl 6
pfPF
phpPHP
php-briefPHP (deprecated no colors, odd framing)
pic16PIC assembly language
pikePike
pixelbenderPixel Bender
pliPL/I
plsqlPL/SQL
postgresqlPostgreSQL
postscriptPostScript
povrayPersistence of Vision Raytracer
powerbuilderPowerBuilder
powershellWindows PowerShell
proftpdProFTPD
progressOpenEdge Advanced Business Language
prologProlog
propertiesProperties file
providexProvideX
purebasicPureBasic
pyconPython
pys60PyS60
python
py
python3
py3
Python
python2
py2
Python 2
qQ
qbasicQBasic/QuickBASIC
railsRails
rebolRebol
regWindows Registry
rexxRexx
robotsrobots.txt
rpmspecRPM Spec files
rsplusR
rubyRuby (Programmiersprache)
sasSAS
scalaScala
schemeScheme
sh
shell
shell-session
Shell Script (POSIX)
scilabScilab
sdlbasicSdlBasic
smalltalkSmalltalk
smartySmarty
sparkSPARK
sparqlSPARQL
sqlSQL
stonescriptStoneScript (Scripting language for ShiVa3D)
systemverilogSystemVerilog
tcshTcsh
tclTcl
teratermTera Term
textPlain text
thinbasicthinBasic
tsTypeScript
tsqlTransact-SQL
typoscriptTypoScript
uniconUnicon
upcUnified Parallel C
urbiURBI
uscriptUnrealScript
valaVala
vbVisual Basic
vbnetVisual Basic .NET
veditVEDIT
verilogVerilog
vhdlVHDL
vimVim script
visualfoxproVisual FoxPro
visualprologVisual Prolog
whitespaceWhitespace
whoisWhois
winbatchWinbatch
xmlXML
xorg_confXorg.conf
yamlYAML
xppMicrosoft Dynamics AX
z80ZiLOG Z80 Assembler
zxbasicZXBasic

Installation

Die Version dieser Erweiterung, die in Mediawiki 1.31 enthalten ist, benötigt Python in der Version 3 (python3) auf dem Server installiert. Dadurch unterscheidet sie sich von der Version, die in Mediawiki 1.30 enthalten war, welche Python in Version 2 (python) verwendete. Zu beachten ist, dass die Python3-Binary im Ausführungspfad des PHP-Interpreters installiert sein muss (PATH-Variable).
Trotz der Umstellung auf Pygments (und weg von GeSHi) und trotz des neuen Namens benutzt diese Erweiterung intern immer noch die alten Dateinamen, wie unten beschrieben.
  • Die Erweiterung herunterladen und die Datei(en) in ein Verzeichnis namens SyntaxHighlight_GeSHi im Ordner extensions/ ablegen.
    Entwickler und Code-Beitragende sollten stattdessen die Erweiterung von Git installieren, mit:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi
  • Wird von git aus installiert, ist Composer auszuführen, um PHP-Abhängigkeiten zu installieren, indem composer install --no-dev im Erweiterungsverzeichnis ausgeführt wird. (Siehe T173141 für mögliche Komplikationen.)Category:Extensions requiring Composer with git/de
  • Folgenden Code am Ende deiner LocalSettings.php -Datei einfügen:
    wfLoadExtension( 'SyntaxHighlight_GeSHi' );
    
  • in Linux müssen Ausführungsberechtigungen für die "pygmentize"-Binary gesetzt werden. Dafür kann man einen FTP-Client oder den folgenden Shell-Befehl verwenden:
chmod a+x /path/to/extensions/SyntaxHighlight_GeSHi/pygments/pygmentize
  • Yes Erledigt – Navigiere zu Special:Version in deinem Wiki, um zu überprüfen, ob die Erweiterung erfolgreich installiert wurde.


Vagrant-Installation:

  • Wird Vagrant benutzt, ist mit vagrant roles enable syntaxhighlight --provision zu installieren
Wenn von Git installiert wird, bitte beachten, dass diese Erweiterung von MediaWiki 1.26 bis MediaWiki 1.31 Composer benötigt.

Nach der Installation via Git wechselt man in das Verzeichnis, das die Erweiterung beinhaltet, z.B. "../extensions/SyntaxHighlight_GeSHi/" und führt composer install --no-dev aus, oder bei einem Update composer update --no-dev.

Als bevorzugte Alternative kann die Zeile "extensions/SyntaxHighlight_GeSHi/composer.json" in die "composer.local.json"-Datei im root-Verzeichnis des Wikis eingetragen werden, z.B. so
{
	"extra": {
		"merge-plugin": {
			"include": [
				"extensions/SyntaxHighlight_GeSHi/composer.json"
			]
		}
	}
}
Jetzt folgendes ausführen: composer update --no-dev Voilà!
Warnung Warnung: Wenn die Erweiterung über FTP hochgeladen wird, sollte sichergestellt werden, dass die Datei "pygments/pygmentize" mit dem Transfertyp "binär" hochgeladen wird.

Konfiguration

$wgSyntaxHighlightMaxLines and $wgSyntaxHighlightMaxBytes (optional): For performance reasons, blobs or pages (JS, Lua and CSS pages) larger than these values will not be highlighted. (since 1.40)

Linux
  • $wgPygmentizePath (optional): Absoluter Pfad zu "pygmentize" aus dem Pygments-Paket. Die Erweiterung beinhaltet das Pygments-Paket und $wgPygmentizePath zeigt standardmäßig auf die mitgelieferte Version. Man kann jedoch auf eine andere Version zeigen, wenn man will. Zum Beispiel: $wgPygmentizePath = "/usr/local/bin/pygmentize";.
Windows
  • Wenn das Mediawiki auf einer Windows-Maschine gehostet wird, muss der Pfad zur Pygmentize.exe gesetzt werden: $wgPygmentizePath = "c:\\Python27\\Scripts\\pygmentize.exe";
    • Wenn es keine pygmentize.exe gibt, muss easy_install Pygments per Kommandozeile von innerhalb des Scripts-Verzeichnisses ausgeführt werden, um die Datei zu erzeugen.

Wenn die mitgelieferte pygmentize-Binary (extensions/SyntaxHighlight_GeSHi/pygments/pygmentize) verwendet wird, muss sichergestellt werden, dass der Webserver die Berechtigung hat, sie auszuführen. Wenn der Host es nicht gestattet, ausführbare Dateien im Webverzeichnis zu hinterlegen, muss python-pygments installiert werden und $wgPygmentizePath = pygmentize in LocalSettings.php gesetzt werden.

Fehlerbehebung

Einige Benutzer berichteten von Problemen mit der Erweiterung nach einem Update auf MediaWiki 1.26 oder höher. Es gab Fälle, wenn Sprachen wie Lua nicht hervorgehoben wurden und wenn Debugging angeschaltet wurde, schmiss MediaWiki den Fehler Notice: Failed to invoke Pygments: /usr/bin/env: python3: No such file or directory.

  • Versuche, $wgPygmentizePath in der LocalSettings.php auf eine externe pygmentize-Binary zeigen zu lassen.
  • In Shared-Hosting-Umgebungen mit cPanel kann dies durch das Einrichten einer neuen Python-Anwendung über das Menü „Setup Python App“ und die Aktivierung der virtuellen Umgebung für die Anwendung über SSH (source /virtualenv/python/3.5/bin/activate) erfolgen. Danach kann das Modul Pygments zur Python-Anwendung hinzugefügt werden. Dazu zum Pfad der virtuellen Umgebung (cd virtualenv/python/3.5/bin/) navigieren, Pygments herunterladen und installieren (./pip install Pygments) und dann das Modul durch Hinzufügen von „Pygments“ unter dem Abschnitt „Vorhandene Anwendungen“ im Menü „Python-Anwendung einrichten“ aktivieren. Dadurch wird die erforderliche Datei im folgenden Pfad erstellt: virtualenv/python/3.5/bin/pygmentize
  • phab:T128993 enthält weitere Vorschläge und Informationen.
  • SELinux kann auch verhindern, dass die Erweiterung mit einem ähnlichen Fehler wie 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 in deinem audit.log erscheint. Das kann mit setsebool -P httpd_unified 1 erlaubt werden.
  • In früheren Versionen dieser Erweiterung hat Windows manchmal einen _Py_HashRandomization_Init-Fehler verursacht. Dies war ein Bug, bei dem die Windows-Umgebung nicht an Python-Aufrufe übergeben wurde. Ein Bugfix wurde in 1.40 veröffentlicht, mit Backports zu 1.38 und 1.39.

VisualEditor-Integration

Das Plugin ermöglicht direktes Editieren mit VisualEditor. Es öffnet sich ein PopUp, wenn ein User syntaxhighlight-Abschnitte bearbeiten will. Damit das funktioniert, muss VisualEditor von der neuesten Git-Version installiert und konfiguriert werden. Gleiches gilt für Parsoid. Diese Feature funktioniert willkürlich nicht mit älteren Parsoid-Versionen. Für Details, siehe Extension:SyntaxHighlight/VisualEditor

Erweitert

Anders als bei <pre>- und <code>-Tags muss (und sollte) hier bei HTML-Zeichen-Gebilden wie &nbsp; das &-Zeichen nicht mittels &amp; escaped werden. Wie beim <pre>-Tag, aber anders als beim <code>-Tag, muss bei Tags im Bereich (außer dem eigenen schließenden Tag) weder das <-Symbol als &lt; escaped werden, noch muss Wikitext mit einem <nowiki>-Tag escaped werden.

Während <pre> davon ausgeht, dass alle 8 Zeichen ein Tabstopp auftritt und Tabs tatsächlich mittels Leerzeichen dargestellt werden, wenn der gerenderte Text kopiert wird, benutzt <syntaxhighlight> Tabstopps aus nur 4 Leerzeichen (außer Internet Explorer, welcher 8 benutzt) und bewahrt die Tabstopp-Zeichen im gerenderten Text; letzteres Verhalten kann durch Einschließen in ein <span style="-moz-tab-size: nn; -o-tab-size: nn; tab-size: nn;">-Tag geändert werden (nicht <div> und nicht durch Verwendung eines eigenen style-Attributs) Das -moz--Präfis wird für Firefox (ab Version 4.0 bis Version 90) benötigt und das -o--Präfix wird für Opera (ab Version 10.60 bis Version 15) benötigt.[2] (Beachten: Das Wiki-Editor-Kästchen geht von 8-Leerzeichen-Tabs aus.) Dies bezieht sich nur auf tastächlich auch gespeicherte Seiten; Vorschauen, die durch ein Editieren-Kästchen oder Special:ExpandTemplates erzeugt wurden, können abweichen.

Siehe auch

Fußnoten

Category:Extensions used on Wikimedia/de#SyntaxHighlight/de Category:Syntax highlighting extensions/de Category:GeSHi extensions/de Category:Extensions with VisualEditor support/de
Category:All extensions/de Category:ApiFormatHighlight extensions/de Category:ContentAlterParserOutput extensions/de Category:Extensions available as Debian packages/de Category:Extensions bundled with MediaWiki 1.21/de Category:Extensions in Wikimedia version control/de Category:Extensions included in BlueSpice/de Category:Extensions included in Canasta/de Category:Extensions included in Fandom/de Category:Extensions included in Miraheze/de Category:Extensions included in MyWikis/de Category:Extensions included in ProWiki/de Category:Extensions included in ShoutWiki/de Category:Extensions included in WikiForge/de Category:Extensions included in semantic::core/de Category:Extensions included in wiki.gg/de Category:Extensions requiring Composer with git/de Category:Extensions used on Wikimedia/de Category:Extensions with VisualEditor support/de Category:Extensions with manual MediaWiki version Category:GPL licensed extensions/de Category:GeSHi extensions/de Category:ParserFirstCallInit extensions/de Category:ResourceLoaderRegisterModules extensions/de Category:SoftwareInfo extensions/de Category:Stable extensions/de Category:Syntax highlighting extensions/de Category:Tag extensions/de