Rozšíření:SyntaxHighlight

From mediawiki.org
This page is a translated version of the page Extension:SyntaxHighlight and the translation is 100% complete.
Toto rozšíření je součástí MediaWiki verze 1.21 a vyšších. To znamená, že jej nemusíte stahovat samostatně. Musíte se nicméně stále řídit pokyny k jeho použití.
Pro zvýraznění syntaxe wikitextu při použití zdrojového editoru viz rozšíření CodeMirror nebo uživatelské skripty Remember the tet a Cacycle.
Základní informace k tomuto rozšíření MediaWiki
SyntaxHighlight
Stav rozšíření: stabilní
Zavádění Značka
Popis Umožňuje zvýraznění syntaxe zdrojového kódu na stránkách wiki
Napsal(i)
Nejnovější verze průběžné aktualizace
Zásady kompatibility Hlavní vývojová větev zachovává zpětnou kompatibilitu.
MediaWiki 1.25+
Změny v databázi Ne
Composer mediawiki/syntax-highlight
Licence GNU General Public License 2.0 nebo pozdější
Zdrojový kód
README
  • $wgPygmentizePath
  • $wgSyntaxHighlightMaxLines
  • $wgSyntaxHighlightMaxBytes
‎<syntaxhighlight>
Používání veřejných wikin 11,760 (Ranked 8th)
Přeložte rozšíření SyntaxHighlight
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření SyntaxHighlight, dříve známé jako SyntaxHighlight_GeSHi, poskytuje bohaté formátování zdrojového kódu pomocí tagu ‎<syntaxhighlight>. Je spuštěn knihovnou Pygments a podporuje stovky různých programovacích jazyků a formátů souborů.

Stejně jako značky ‎<pre> a <poem > se text vykresluje přesně tak, jak byl napsán, a zachovává veškeré prázdné místo.

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. Podívejte se na stránku úkol T250763.

Tag ‎<syntaxhighlight> se od verze 1.39 stal mocným za 5 000 nebo nějaké jiné extrémní množství tagů zvýraznění syntaxe na jedné stránce, jako například u Wikiknih. V extrémních případech zvyšte hodnotu časového limitu webového serveru v prostředích. (Podívejte se na stránku úkol T316858.)

Použití

Po instalaci můžete na wiki stránkách používat značky "syntaxhighlight". Například,

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

je výsledkem následujícího označení wikitextu:

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

Ve starších verzích (před MediaWiki 1.16) rozšíření používalo značku ‎<source>. Toto je stále podporováno, ale je zastaralé. Místo toho by měl být použit ‎<syntaxhighlight>.

Styl

Pokud je zobrazený kód příliš velký, můžete jej upravit vložením následujícího do stránky MediaWiki:Common.css ve vaší wiki (vytvořte ji, pokud neexistuje):

/* CSS umístěné zde bude použito na všechny vzhledy */
.mw-highlight pre {
	font-size: 90%;
}

Zapouzdření bloků kódu do ohraničení lze provést vložením řádku jako border: 1px dashed blue; v sekci výše. Kontrolu nad rodinou písem lze také uplatnit vložením řádku jako font-family: "Courier New", monospace; do sekce výše.

Kategorie chyb zvýraznění syntaxe

Rozšíření přidává stránky, které mají špatný atribut lang ve značce ‎<syntaxhighlight> do kategorie sledování. Klíč zprávy MediaWiki:syntaxhighlight-error-category určuje název kategorie. Na této wiki je to Category:Pages with syntax highlighting errors.

Nejčastější chybou, která vede k tomu, že stránky jsou označeny touto kategorií, je značka ‎<syntaxhighlight> bez atributu lang, protože starší verze tohoto rozšíření podporovaly definici $wgSyntaxHighlightDefaultLang. Ty mohou být obvykle buď nahrazeny ‎<pre>, nebo lang="bash" nebo lang="text" mohou být přidány ke značce.

Kategorie může být také přidána a obsah nebude zvýrazněn, pokud je více než 1000 řádků nebo více než 100 kB textu.[1]

Parametry

lang

Atribut lang="name" definuje, jaký lexer by měl být použit. Jazyk ovlivňuje, jak rozšíření zvýrazní zdrojový kód. Podrobnosti o podporovaných jazycích najdete v sekci #Supported languages.

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

Zadáním neplatného nebo neznámého názvu označíte stránku kategorií sledování. Podrobnosti naleznete v části #Syntax highlighting error category na této stránce.

line

Atribut line umožňuje čísla řádků.

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

start

Atribut start (v kombinaci s line) definuje číslo prvního řádku bloku kódu. Například line start="55" způsobí, že číslování řádků začne na 55.

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

highlight

Atribut highlight určuje jeden nebo více řádků, které by měly být označeny (zvýrazněním těchto řádků jinou barvou pozadí). Můžete zadat více čísel řádků oddělených čárkami (například highlight="1,4,8") nebo rozsahy pomocí dvou čísel řádků a pomlčky (například highlight="5-7").

Specifikace čísla řádků ignoruje jakékoli přečíslování zobrazených čísel řádků pomocí atributu start.
def quick_sort(arr):
    less = []
    pivot_list = []
    more = []
    if len(arr) <= 1:
        return arr

výsledkem je

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

inline

Verze MediaWiki:
1.26

Atribut označuje, že zdrojový kód by měl být vložen jako součást odstavce (na rozdíl od vlastního bloku). Tato možnost je k dispozici od MediaWiki 1.26.

Použití parametru "enclose" je zastaralé. Pokud je nastaveno na "none", mělo by být nahrazeno inline. V opačném případě jej lze zcela odstranit.
Zalomení řádků se může vyskytnout v libovolné mezeře mezi úvodním a závěrečným tagem, pokud zdrojový kód není označen jako nerozbitný pomocí class="nowrap" (na těch wikinách, které to podporují; viz níže) nebo style="white-space:nowrap".

Například:

Následující lambda x: x * 2 je výraz lambda v Pythonu.

Výsledkem je:

Následující <syntaxhighlight lang="python" inline>lambda x: x * 2</syntaxhighlight> je [[w:Lambda (programming)|výraz lambda]] v Pythonu.

class

Když je použit inline, class="nowrap" (na těch wiki, které to podporují; ne na MediaWiki samotné) určuje, že zalomení řádků by se nemělo vyskytovat v mezerách v bloku kódu.

Například:

Bez class="nowrap":

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlambda x: x * 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

S style="white-space:nowrap":

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlambda x: x * 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

style

Atribut style umožňuje přímé zahrnutí atributů CSS. To je ekvivalentní uzavření bloku do tagu ‎<div> (nikoli ‎<span>). Atribut tab‑size nelze zadat tímto způsobem. Vyžaduje to uzavírací značku ‎<span>, jak je popsáno níže v části Advanced.

Například:

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

Výsledkem je:

<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>

Podporované jazyky

Pygments poskytuje podporu pro zvýrazňování syntaxe stovek počítačových jazyků a formátů souborů prostřednictvím různých "lexerů", které jsou součástí knihovny.

Ve většině případů je atribut lang=, který se má použít s tímto rozšířením, tvořen malými písmeny v názvu jazyka. Mnohé však mají aliasy nebo "krátká jména", jak se jim říká v dokumentaci Pygments; úplné podrobnosti viz "Available lexers".

Některé jazyky dříve podporované GeSHi byly namapovány na lexery Pygments. Podrobnosti viz SyntaxHighlightGeSHiCompat.php.

Pygments poskytuje lexer "wikitext" od dubna 2023. Ve starších verzích použijte místo toho "html+handlebars" nebo "moin".

Od ledna 2020 je úplný seznam jazyků podporovaných Pygments:

Programovací jazyky

  • ActionScript
  • Ada
  • Agda (včetně gramotných)
  • Alloy
  • AMPL
  • ANTLR
  • APL
  • AppleScript
  • Assembly (různé)
  • Asymptote
  • Augeas
  • AutoIt
  • Awk
  • BBC Basic
  • Befunge
  • BlitzBasic
  • Boa
  • Boo
  • Boogie
  • BrainFuck
  • C, C++ (vč. dialekty jako Arduino)
  • C#
  • Chapel
  • Charm++ CI
  • Cirru
  • Clay
  • Clean
  • Clojure
  • CoffeeScript
  • ColdFusion
  • Common Lisp
  • Component Pascal
  • Coq
  • Croc (MiniD)
  • Cryptol (včetně Literate Cryptol)
  • Crystal
  • Cypher
  • Cython
  • D
  • Dart
  • DCPU-16
  • Delphi
  • Dylan (včetně řídicího panelu)
  • Eiffel
  • Elm
  • Emacs Lisp
  • Email
  • Erlang (včetně shellové relace)
  • Ezhil
  • Factor
  • Fancy
  • Fantom
  • Fennel
  • FloScript
  • Forth
  • Fortran
  • FreeFEM++
  • F#
  • GAP
  • Gherkin (Cucumber)
  • GLSL shadery
  • Golo
  • Gosu
  • Groovy
  • Haskell (včetně Literate Haskell)
  • HLSL
  • HSpec
  • Hy
  • IDL
  • Idris (včetně Literate Idris)
  • Igor Pro
  • Io
  • Jags
  • Java
  • JavaScript
  • Jasmin
  • Jcl
  • Julia
  • Kotlin
  • Lasso (včetně šablonování)
  • 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 (včetně konzolové relace a zpětného sledování)
  • QBasic
  • Racket
  • Raku a.k.a. Perl 6
  • REBOL
  • Red
  • Redcode
  • Rexx
  • Ride
  • Ruby (včetně irb relace)
  • Rust
  • S, S-Plus, R
  • Scala
  • Scdoc
  • Scheme
  • Scilab
  • SGF
  • Shell skripty (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

Jazyky šablon

  • Angular šablony
  • Cheetah šablony
  • ColdFusion
  • Django / Jinja šablony
  • ERB (Ruby šablony)
  • Evoque
  • Genshi (jazyk šablon Trac)
  • Handlebars
  • JSP (Java Server Pages)
  • Liquid
  • Myghty (the HTML::Mason základní rámec)
  • Mako (nástupce Myghty)
  • Slim
  • Smarty šablony (šablony PHP)
  • Tea
  • Twig

Jiná označení

  • Konfigurační soubory Apache
  • Apache Pig
  • BBCode
  • CapDL
  • Cap'n Proto
  • CMake
  • Csound scores
  • CSS
  • Řídicí soubory Debianu
  • Soubory Diff
  • Dockerfiles
  • DTD
  • EBNF
  • Záhlaví e-mailů
  • Extempore
  • Flatline
  • Gettext katalogy
  • Gnuplot skripty
  • Groff označení
  • Hexdumps
  • HTML
  • HTTP relace
  • IDL
  • Inform
  • INI-konfigurační soubory stylu
  • IRC protokoly (irssi styl)
  • Isabelle
  • Poznámky JSGF
  • JSON, JSON-LD
  • Lean theorem prover
  • Konfigurační soubory Lighttpd
  • Linux protokol jádra (dmesg)
  • LLVM montáž
  • LSL skripty
  • Makefiles
  • MoinMoin/Trac Wiki označení
  • MQL
  • MySQL
  • NCAR příkazový jazyk
  • Nginx konfigurační soubory
  • Nix jazyk
  • NSIS skripty
  • Notmuch
  • POV-Ray scény
  • Puppet
  • QML
  • Ragel
  • Redcode
  • ReST
  • Roboconf
  • Robot Framework
  • RPM speciální soubory
  • Rql
  • RSL
  • Scdoc
  • SPARQL
  • SQL, také MySQL, SQLite
  • Squid konfigurace
  • TADS 3
  • Terraform
  • TeX
  • Thrift
  • TOML
  • Treetop gramatiky
  • USD (Universal Scene Description)
  • Varnish konfigurace
  • VGL
  • Vim Script
  • WDiff
  • Windows dávkové soubory
  • XML
  • XSLT
  • YAML
  • Windows Soubory registru
Od MediaWiki 1.37 byly s aktualizací pygmentů na verzi 2.10.0 přidány další lexery, jak je podrobně popsáno v úkol 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

Lexery dříve podporované GeSHi

Níže je uveden částečný seznam jazyků, které by GeSHi mohlo zvýraznit, s přeškrtnutím jazyků, které po přechodu na Pygments již nejsou podporovány.

Lexery dříve podporované GeSHi
Kód Jazyk
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 (deprecated – 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 (Scripting language for 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


Instalace

Verze tohoto rozšíření dodávaná s MediaWiki 1.31 vyžaduje instalaci Python verze 3 (python3) na server. Toto je změna oproti verzi dodávané s MediaWiki 1.30, která používala Python verze 2 (python). Všimněte si, že binární soubor python3 musí být nainstalován ve spouštěcí PATH interpretu PHP.
Navzdory své aktualizaci na Pygments (a pryč od GeSHi) a navzdory svému aktualizovanému názvu toto rozšíření interně stále používá dřívější názvy souborů, jak je uvedeno níže.
  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného SyntaxHighlight_GeSHi ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi
  • Při instalaci z Gitu spusťte Composer pro instalaci závislostí PHP zadáním composer install --no-dev v adresáři rozšíření. (Vyskytnou-li se nějaké komplikace, podívejte se na úkol T173141.)
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'SyntaxHighlight_GeSHi' );
    
  • V Linuxu nastavte oprávnění ke spuštění pro binární soubor pygmentize. K tomu můžete použít FTP klienta nebo následující příkaz shellu:
chmod a+x /path/to/extensions/SyntaxHighlight_GeSHi/pygments/pygmentize
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.


Instalace Vagrant:

  • Pokud používáte Vagrant , instalujte s těmito parametry vagrant roles enable syntaxhighlight --provision
Při instalaci z Git mějte na paměti, že počínaje MediaWiki 1.26 a konče MediaWiki 1.31 toto rozšíření vyžaduje Composer.

Takže po instalaci z Git přejděte do adresáře obsahujícího příponu, např. $adresář a spusťte composer install --no-dev, nebo při aktualizaci: composer update --no-dev.

Alternativně a nejlépe přidejte řádek "extensions/SyntaxHighlight_GeSHi/composer.json" do souboru "composer.local.json" v kořenovém adresáři vaší wiki, jako např.
{
	"extra": {
		"merge-plugin": {
			"include": [
				"extensions/SyntaxHighlight_GeSHi/composer.json"
			]
		}
	}
}
Nyní spusťte composer update --no-dev. Voilà!
Varování Varování: Při nahrávání rozšíření přes FTP nezapomeňte nahrát soubor pygments/pygmentize s typem přenosu binary.

Konfigurace

$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 (volitelné): Absolutní cesta k pygmentize balíčku Pygments. Rozšíření standardně sdružuje balíček Pygments a $wgPygmentizePath ukazuje na přibalenou verzi, ale pokud chcete, můžete ukázat na jinou verzi. Například: $wgPygmentizePath = "/usr/local/bin/pygmentize";.
Windows
  • Pokud hostujete MediaWiki na počítači s Windows, musíte nastavit cestu pro $wgPygmentizePath = "c:\\Python27\\Scripts\\pygmentize.exe"; Pygmentize.exe
    • Pokud neexistuje pygmentize.exe, spusťte easy_install Pygments z příkazového řádku ve složce Scripts a vygenerujte soubor.

Pokud používáte přibalenou binárku pygmentize (extensions/SyntaxHighlight_GeSHi/pygments/pygmentize), ujistěte se, že váš webový server má oprávnění ji spustit. Pokud vám váš hostitel neumožňuje přidávat spustitelné soubory do vašeho webového adresáře, nainstalujte python-pygments a přidejte $wgPygmentizePath = pygmentize do LocalSettings.php.

Odstraňování problémů

Po aktualizaci na MediaWiki v1.26 a vyšší začali někteří uživatelé hlásit problémy s rozšířením. Mohou nastat případy, kdy některé jazyky, jako například Lua nemusí být zvýrazněny, a zapnutím debugging MediaWiki vyhodí chybu Notice: Failed to invoke Pygments: /usr/bin/env: python3: No such file or directory.

  • Zkuste nasměrovat $wgPygmentizePath v LocalSettings.php na externí pygmentize binární soubor.
  • V prostředích sdíleného hostování s cPanel to lze provést nastavením nové aplikace Python prostřednictvím nabídky "Setup Python App" a aktivací virtuálního prostředí pro aplikaci prostřednictvím SSH (source /virtualenv/python/3.5/bin/activate). Poté lze do aplikace Python přidat modul Pygments [modul https://clients.temok.com/knowledgebase.php?action=displayarticle&id=524], pro který přejděte na cestu virtuálního prostředí (cd virtualenv/python/3.5/bin/), stáhněte si a nainstalujte Pygments (./pip install Pygments) a poté modul aktivujte přidáním "Pygments" pod "Stávající aplikace" v nabídce "Nastavení aplikace Python". Tím se vytvoří požadovaný soubor na cestě: virtualenv/python/3.5/bin/pygmentize
  • Další návrhy a informace naleznete na této stránce phab:T128993.
  • SELinux může také zabránit spuštění rozšíření s chybou podobnou 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 ve vašich audit.log. To lze povolit s setsebool -P httpd_unified 1
  • V dřívějších verzích tohoto rozšíření Windows někdy selhal s chybou _Py_HashRandomization_Init. Toto byla chyba s prostředím Windows, které nebylo předáno spouštění pythonu. Oprava byla vydána v 1.40 se zpětnými porty na 1.38 a 1.39.

Integrace VisualEditoru

Plugin umožňuje přímé úpravy pomocí VisualEditoru. Když chce uživatel upravit sekce syntaxhighlight, otevře se vyskakovací okno. Aby to fungovalo, musí být VisualEditor nainstalován a nakonfigurován z nejnovější verze Git, stejně jako Parsoid. Tato funkce nemusí fungovat se staršími verzemi Parsoid. Další podrobnosti najdete na stránce Extension:SyntaxHighlight/VisualEditor .

Pokročilé

Na rozdíl od značek ‎<pre> a ‎<code> znakové entity HTML jako &nbsp; nemusí (a neměly by) mít znak & uvozený jako &amp; . Stejně jako u tagu ‎<pre>, ale na rozdíl od tagu ‎<code>, tagy v rozsahu (jiné než jeho vlastní uzavírací tag) nemusí mít symbol < escapován jako &lt;, ani wikitext nemusí být escapován tagem ‎<nowiki>.

Kromě toho, zatímco ‎<pre> předpokládá zarážky tabulátoru každých 8 znaků a vykresluje tabulátory pomocí skutečných mezer při kopírování vykresleného textu, ‎<syntaxhighlight> používá zarážky tabulátoru se 4 mezerami (kromě Internet Exploreru, který používá 8) a zachovává znaky tabulátoru ve vykresleném textu. Druhý jmenovaný lze změnit pomocí uzavíracího tagu ‎<span style="-moz-tab-size: nn; -o-tab-size: nn; tab-size: nn;"> (nikoli ‎<div> a bez použití vlastního atributu style). Předpona -moz- je vyžadována pro Firefox (od verze 4.0 do verze 90) a předpona -o- je vyžadována pro Opera (od verze 10.60 do verze 15).[2] (Všimněte si, že editační pole wiki předpokládá tabulátory s 8 mezerami.) To platí pouze pro skutečně uložené stránky. Náhledy generované pomocí editačního pole nebo Special:ExpandTemplates se mohou lišit.

Související odkazy


Poznámky pod čarou