Hilfe:Syntaxhighlight

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Hilfe:Source)
Wechseln zu: Navigation, Suche
Abkürzung: H:SYH
Hilfe > Wikisyntax > Syntaxhighlight

Syntaxhighlight („Syntaxhervorhebung“) ist eine Erweiterung der MediaWiki-Software zur Darstellung von Programm-Quelltexten auf Wiki-Seiten. Die Quelltexte werden ihrer Syntax entsprechend farblich dargestellt.[1]

Syntax[Bearbeiten]

Syntax zur Erstellung von Quelltexten:

<syntaxhighlight lang="php">
<?php
  echo "Hallo Welt!";
?>
</syntaxhighlight>

Ausgabe:

<?php
  echo "Hallo Welt!";
?>


Alternativ kann auch <source> genutzt werden, falls das zu markierende Beispiel ein Tag <syntaxhighlight> enthält. Bis 2009 war <source> das bevorzugte Element. Nachdem in HTML5 ein Multimedia-Element gleichen Namens eingeführt worden war, wurde die Präferenz getauscht. Zwar ist ohnehin keine unmittelbare Verwendung derartiger HTML-Elemente in einem Wikitext möglich, aber Bearbeiter sollten nicht durch gleichnamige Elemente völlig unterschiedlicher Bedeutung verwirrt werden. Und <source> könnte im dargestellten HTML-Beispiel vorkommen.

Parameter[Bearbeiten]

Die Angabe von lang ist Pflichtparameter. Optional gibt es außerdem:

inline Art der Einbindung
highlight Zeilen hervorheben
line Zeilennummern anzeigen
start Zeilennummer-Beginn
strict Programmiersprache streng interpretieren
enclose (Art der Einbindung)
class

style
id
title
dir

Standard-Parameter
inline
<syntaxhighlight inline lang="css">
<syntaxhighlight inline lang="css">table {display:none;}</syntaxhighlight>
Damit kann formatierter Computercode innerhalb eines Absatzes erzeugt werden. Beispiel: „Dies ist ein Test um zu zeigen, dass beispielsweise CSS-Codetable {display:none;} inline dargestellt werden kann.“
highlight
<syntaxhighlight line highlight="3-5" lang="php">
Die Zeilen 3 bis 5 werden hellgelb unterlegt.
1 <?php
2   echo "Hallo Welt!";
3   echo "Hallo Welt!";
4   echo "Hallo Welt!";
5   echo "Hallo Welt!";
6   echo "Hallo Welt!";
7   echo "Hallo Welt!";
8 ?>
line
<syntaxhighlight line lang="php">
Die Zeilen werden durchnummeriert, jede fünfte Zeilennummer wird hervorgehoben.
1 <?php
2   echo "Hallo Welt!";
3   echo "Hallo Welt!";
4   echo "Hallo Welt!";
5   echo "Hallo Welt!";
6   echo "Hallo Welt!";
7   echo "Hallo Welt!";
8 ?>
start
<syntaxhighlight line start="10" lang="php">
Die Zeilen werden durchnummeriert, die Zeilenzählung beginnt bei 10.
10 <?php
11   echo "Hallo Welt!";
12 ?>
style
<syntaxhighlight style="margin-left: 6em;" lang="html4strict">
Standard-Attribut in HTML.
  • Beispiel: Hier, um einen ganzen Block entsprechend des Kontextes um 6em einzurücken:
<syntaxhighlight style="margin-left: 6em;" lang="html4strict">
enclose
<syntaxhighlight enclose="none" lang="css">
Veralteter Parameter, der als enclose="none" gerade dem inline entspricht.
enclose= konnte früher noch weitere Werte annehmen (etwa "div"), die heute keine Bedeutung mehr haben.


Unterstützte Sprachen[Bearbeiten]

Die folgenden Sprachen werden von dieser Erweiterung unterstützt:[2]

Mit der Zuweisung strict="1" kann die zugrundeliegende Software angewiesen werden, die Programmiersprache standardgemäß auszulegen, falls dafür eine gesonderte Definition verfügbar ist.

Anpassungen[Bearbeiten]

Die Ausgabe kann über MediaWiki:Geshi.css für alle Benutzer angepasst werden, für benutzerspezifische Anpassungen siehe Skin/CSS.

Weiterhin kann über den Parameter style= die aktuelle Einbindung angepasst werden, etwa Rahmen oder Einrückung.

  • Seit Mitte 2012[3] werden die Blöcke nicht mehr als <div> eingefügt, sondern (wenn nicht mit inline markiert) als <pre> mit dem hier standardmäßig vorgesehenen Rahmen.
    • Das ist bei einem mehrzeiligen Block sinnvoll; bei nur ein oder zwei Zeilen kann dies aber störend wirken.
    • style="border: none; padding: 0;"
      reduziert die Dekoration weitestmöglich.

Seit Ende Juni 2015 werden nur noch die Elemente <pre> und <code> ausgeliefert.

Vorlagenprogrammierung[Bearbeiten]

Bei der Vorlagenprogrammierung mittels #tag: ist auf die Reihenfolge der Parameter zu achten. Es muss zwingend als erster Parameter der Content übergeben werden. Anschließend können die Angaben zur Sprache und dem umschließenden HTML-Tag erfolgen. Zudem dürfen keine Zeilenumbrüche zwischen den einzelnen Parametern enthalten sein.

{{#tag:syntaxhighlight|{{{code}}}|lang={{#if:{{{language|}}}|{{{language}}}|diff}}}}

Anschließend kann eine so entworfene Vorlage mit den Parametern

{{Vorlagenname
| language =
| code =
}}

aufgerufen werden. Als Beispiel für eine solche Verwendung sei auf die Vorlage Patch verwiesen.

Des Weiteren ist zu beachten, dass der Parameter code selbst direkt kein Pipezeichen enthalten darf (wie immer in der Vorlagenprogrammierung), dieses muss dann ggf. durch ein {{!}} ersetzt werden (Beispiel).

Der Code kann auch aus einer vollständigen Seite eingebunden werden:

{{#tag:syntaxhighlight | {{Modul:Hello}} | lang=lua}}

liefert

local p = {} 
function p.hello(frame)
    local name = frame.args[1]
    if not name then 
        name = 'Welt' 
    end
    return  'Hallo, ' .. name .. '! Dies ist Lua!' 
end 
return p

GeSHi[Bearbeiten]

Bis zum 25. Juni 2015 wurde das Paket GeSHi benutzt, seitdem pygments.

Um nicht alle Pfade und Definitionen und Bezeichner umstellen zu müssen, nennt sich die Erweiterung aber weiterhin „GeSHi“, und Identifikatoren behalten diesen Namensbestandteil.

Die Umstellung wurde erforderlich, weil es keine Upstream-Wartung und Pflege bei GeSHi mehr gab.

Weitere Informationen[Bearbeiten]

 MediaWiki: Extension:SyntaxHighlight GeSHi – Technische Informationen (englisch)

Extern

Anmerkungen[Bearbeiten]

  1. Falls du in deinen Einstellungen die Option Vorschau sofort anzeigen ausgewählt hast, wird Syntaxhighlight in der Vorschau einer Seite nicht angezeigt. Sie muss dann gespeichert werden, um sichtbar zu sein.
  2. Bei Dialekten und Varianten wird der gleiche optische Effekt meist auch mit der Stamm-Sprache erreicht.
  3. phab:T21416 (Bugzilla:19416), rev:113190