Extension:SyntaxHighlight/pt-br

A extensão SyntaxHighlight, anteriormente conhecida como SyntaxHighlight_GeSHi, fornece formatação rica de código-fonte usando a marcação. Ela é "alimentada" pela biblioteca Pygments e suporta centenas de diferentes linguagens de programação e formatos de arquivos.

Assim como as marcaçõess e , o texto é renderizado exatamente como foi digitado, preservando qualquer espaço em branco.

The SyntaxHighlight extension does not work on hardened wiki installations due to lack of,   and friends. Veja.

A marcação (tag) se tornou cara desde a versão 1.39 para 5.000 ou alguma outra quantidade extrema de marcações (tags) de realce de sintaxe em uma única página, como para a Wikilivros. Increase webserver timeout value in environments in extreme cases. (Veja .)

Uso
Uma vez instalada, você pode usar marcações "syntaxhighlight" nas páginas wiki. Por exemplo,

é o resultado da seguinte marcação de wikitexto:

Em versões mais antigas (antes do MediaWiki 1.16), a extensão usava a marcação. Isso ainda é suportado, mas está obsoleto. deve ser usada em seu lugar.

Estilo
Se o código exibido for muito grande, você pode ajustá-lo colocando o seguinte na página MediaWiki:Common.css em sua wiki (crie-a se não existir):

Encapsular blocos de código em bordas pode ser feito inserindo uma linha como na seção acima. O controle sobre a família de fontes (font family) usada também pode ser exercido inserindo uma linha como na seção acima.



Categoria de erro de realce de sintaxe
A extensão adiciona páginas que possuem um atributo  inválido em uma marcação  a uma categoria de rastreamento. A chave de mensagem MediaWiki:syntaxhighlight-error-category determina o nome da categoria; nesta wiki é Category:.

O erro mais comum que faz com que as páginas sejam marcadas com esta categoria é uma marcação sem nenhum atributo , porque as versões mais antigas desta extensão suportavam a definição de. Normalmente, elas podem ser substituídas por, ou  ou   podem ser adicionados à marcação.

A categoria também pode ser adicionada, e o conteúdo não será destacado, se houver mais de 1000 linhas ou mais de 100 kB de texto.

lang
O atributo  define qual analisador sintático (lexical, "lexer") deve ser usada. A linguagem afeta como a extensão realça o código-fonte. Consulte a seção #Linguagens suportadas para obter detalhes sobre as linguagens suportadas.

A especificação de um nome inválido ou desconhecido marcará a página com uma categoria de rastreamento. Consulte a seção #Categoria de erro de realce de sintaxe nesta página para obter detalhes.

line
O atributo  permite números de linhas.

start
O atributo  (em combinação com  ) define o número da primeira linha do bloco de código. Por exemplo,  fará com que a numeração das linhas comece em 55.

highlight
O atributo  especifica uma ou mais linhas que devem ser marcadas (destacando essas linhas com uma cor de fundo diferente). Você pode especificar vários números de linhas separados por vírgulas (por exemplo, ) ou intervalos usando dois números de linhas e um hífen (por exemplo,  ).

é o resultado de

inline
O atributo indica que o código-fonte deve estar embutido como parte de um parágrafo (em vez de ser seu próprio bloco). Esta opção está disponível desde a versão 1.26 de MediaWiki.

Por exemplo:

O  a seguir é uma expressão lambda (em inglês) em Python.

É o resultado de:

class
Quando  é usado,   (nas wikis que o suportam; não no próprio MediaWiki) especifica que as quebras de linhas não devem ocorrer em espaços dentro do bloco de código.

Por exemplo:

Sem :

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Com :

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

style
O atributo  permite que atributos de folhas de estilos em cascatas (F.E.C., C.S.S.) sejam incluídos diretamente. Isso é equivalente a colocar o bloco em uma marcação (não ). O atributo  não pode ser especificado dessa forma; ele requer uma marcação  envolvente conforme descrito abaixo em Avançado.

Por exemplo:

É o resultado de:



Línguagens suportadas
A Pygments fornece suporte para realçar a sintaxe de centenas de linguagens de computador e formatos de arquivo por meio de vários "analisadores sintáticos" (lexicais, "lexers") incluídos na biblioteca.

Na maioria dos casos, o atributo  a ser usado com esta extensão é a versão minúscula do nome da linguagem. No entanto, muitos têm pseudônimos, ou "nomes curtos", como são chamados na documentação da Pygments; veja "analisadores sintáticos (lexicais, "lexers") disponíveis" para obter detalhes completos.

Algumas linguagens anteriormente suportadas por GeSHi foram mapeadas para os analisadores sintáticos (lexicais, "lexers") da Pygments; veja para detalhes.

A partir de janeiro de 2020, a lista completa de linguagens suportadas pela Pygments é:

Linguagens de programação
1=

ActionScript

Ada

Agda (incl. literate)

Alloy

AMPL

ANTLR

APL

AppleScript

Assembly (various)

Asymptote

Augeas

AutoIt

Awk

BBC Basic

Befunge

BlitzBasic

Boa

Boo

Boogie

BrainFuck

C, C++ (incl. dialects like Arduino)

C#

Chapel

Charm++ CI

Cirru

Clay

Clean

Clojure

CoffeeScript

ColdFusion

Common Lisp

Component Pascal

Coq

Croc (MiniD)

Cryptol (incl. Literate Cryptol)

Crystal

Cypher

Cython

D

Dart

DCPU-16

Delphi

Dylan (incl. console)

Eiffel

Elm

Emacs Lisp

Email

Erlang (incl. shell sessions)

Ezhil

Factor

Fancy

Fantom

Fennel

FloScript

Forth

Fortran

FreeFEM++

F#

GAP

Gherkin (Cucumber)

GLSL shaders

Golo

Gosu

Groovy

Haskell (incl. Literate Haskell)

HLSL

HSpec

Hy

IDL

Idris (incl. Literate Idris)

Igor Pro

Io

Jags

Java

JavaScript

Jasmin

Jcl

Julia

Kotlin

Lasso (incl. 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 (incl. console sessions and tracebacks)

QBasic

Racket

Raku a.k.a. Perl 6

REBOL

Red

Redcode

Rexx

Ride

Ruby (incl. irb sessions)

Rust

S, S-Plus, R

Scala

Scdoc

Scheme

Scilab

SGF

Shell 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

Template languages
1=

Angular templates

Cheetah templates

ColdFusion

Django / Jinja templates

ERB (Ruby templating)

Evoque

Genshi (the Trac template language)

Handlebars

JSP (Java Server Pages)

Liquid

Myghty (the HTML::Mason based framework)

Mako (the Myghty successor)

Slim

Smarty templates (PHP templating)

Tea

Twig

Outras marcações
1=

Apache config files

Apache Pig

BBCode

CapDL

Cap'n Proto

CMake

Csound scores

CSS

Debian control files

Diff files

Dockerfiles

DTD

EBNF

E-mail headers

Extempore

Flatline

Gettext catalogs

Gnuplot script

Groff markup

Hexdumps

HTML

HTTP sessions

IDL

Inform

INI-style config files

IRC logs (irssi style)

Isabelle

JSGF notation

JSON, JSON-LD

Lean theorem prover

Lighttpd config files

Linux kernel log (dmesg)

LLVM assembly

LSL scripts

Makefiles

MoinMoin/Trac Wiki markup

MQL

MySQL

NCAR command language

Nginx config files

Nix language

NSIS scripts

Notmuch

POV-Ray scenes

Puppet

QML

Ragel

Redcode

ReST

Roboconf

Robot Framework

RPM spec files

Rql

RSL

Scdoc

SPARQL

SQL, also MySQL, SQLite

Squid configuration

TADS 3

Terraform

TeX

Thrift

TOML

Treetop grammars

USD (Universal Scene Description)

Varnish configs

VGL

Vim Script

WDiff

Windows batch files

XML

XSLT

YAML

Windows Registry files

Analisadores sintáticos (lexicais, "lexers") suportados anteriormente por GeSHi
Abaixo está uma lista parcial de linguagens que GeSHi poderia destacar, com tachado para linguagens que não são mais suportadas após a mudança para a Pygments.

Configuração
and (optional): For performance reasons, blobs or pages (JS, Lua and CSS pages) larger than these values will not be highlighted. (since 1.40)


 * Linux:


 * Caminho absoluto para o pygmentize do pacote da Pygments. A extensão agrupa o pacote da Pygments e aponta para a versão agrupada por padrão, mas você pode apontar para uma versão diferente, se desejar. Por exemplo:.


 * Windows:


 * Se você estiver hospedando sua MediaWiki em uma máquina com Windows, você deve definir o caminho para o Pygmentize.exe
 * Se não houver, execute   na linha de comando dentro da pasta   para gerar o arquivo.

Se você estiver usando o binário pygmentize incluído (extensions/SyntaxHighlight_GeSHi/pygments/pygmentize), certifique-se de que seu servidor da web tenha permissão para executá-lo. Se o sua hospedagem (host) não permitir que você adicione executáveis ao seu diretório da web, instale python-pygments e adicione a LocalSettings.php.


 * Resolução de problemas:

Depois de atualizar para MediaWiki v1.26 e superior, alguns usuários começaram a relatar problemas com a extensão. Pode haver casos em que algumas linguagens, como Lua, podem não ser destacadas e, ao ativar a depuração, a MediaWiki lançaria o erro.


 * Tente apontar em LocalSettings.php para um binário pygmentize externo.
 * Em ambientes de hospedagem compartilhada com cPanel, isso pode ser feito configurando um novo aplicativo Python por meio do menu "Configurar aplicativo Python" ("Setup Python app") e ativando o ambiente virtual do aplicativo por meio de shell seguro (Sh.S., S.Sh.) . Depois disso, o módulo da Pygments pode ser adicionado ao aplicativo Python, para o qual navegue até o caminho do ambiente virtual, baixe e instale a Pygments e ative o módulo adicionando "Pygments" no campo "Aplicativos existentes" ("Existing applications") do menu "Configurar aplicativo Python" ("Setup Python app"). Isso criará o arquivo necessário no caminho:


 * Veja T128993 sobre isso para mais sugestões e informações.
 * O SELinux também pode impedir que a extensão seja executada com um erro semelhante a  em seu audit.log. Isso pode ser permitido com
 * Em versões anteriores dessa extensão, o Windows às vezes falhava com um erro _Py_HashRandomization_Init. Esta foi uma falha (bug) com o ambiente do Windows não sendo passado para execuções do python. Uma correção foi lançada na 1.40, com compatibilidade (backports) para a 1.38 e a 1.39.



Integração com o VisualEditor
O plug-in permite edição direta com o VisualEditor. Uma pop-up é aberta quando um usuário deseja editar as seções da. Para que isso funcione, o VisualEditor deve ser instalado e configurado a partir da versão mais recente do Git, o mesmo para o Parsoid. O recurso pode não funcionar com versões mais antigas do Parsoid. Veja para detalhes

Avançado
Diferentemente das marcações e, entidades de caracteres da linguagem de marcação de hipertexto (L.M.Ht., Ht.M.L.) como   não precisam (e não devem) ter o caractere   escapado como. Como a marcação, mas diferentemente da marcação , as marcações dentro do intervalo (além de sua própria marcação de fechamento) não precisam ter o símbolo  escapado como  , nem o wikitexto precisa ser escapado com uma marcação.

Além disso, enquanto assume paradas de tabulação a cada 8 caracteres e renderiza tabulações usando espaços reais quando o texto renderizado é copiado,  usa paradas de tabulação de 4 espaços (exceto Internet Explorer, que usa 8) e preserva os caracteres de tabulação no texto renderizado ; o último pode ser alterado usando uma marcação  envolvente (não, e não usando seu próprio atributo  ). O prefixo  é necessário para o Firefox (da versão 4.0 à versão 90) e o prefixo   é necessário para o Opera (da versão 10.60 à versão 15). (Observe que a caixa de edição da wiki assume tabulações de 8 espaços.) Isso se aplica apenas às páginas salvas reais; as visualizações geradas por meio de uma caixa de edição ou Special:ExpandTemplates podem ser diferentes.



Ver também

 * Pygments — Python syntax highlighter
 * Extensões dependentes desta:
 * — destaca páginas com base em sufixos dos títulos.
 * Extensões alternativas:
 * — destacador de sintaxe que usa a biblioteca HighlightJS (inclui suporte para algumas linguagens que estão faltando na Pygments, como a Maxima).
 * — destacador de sintaxe que usa a biblioteca Google Code Prettify.