2011-02-02 10 views
16

¿Hay alguna extensión de MediaWiki que admita en línea resaltado de sintaxis? (Es decir, con soporte para los fragmentos de código incrustados en los párrafos de texto normales)Destaque de sintaxis en línea en MediaWiki

Actualmente uso SyntaxHighlight GeSHi, pero no estoy seguro de que es compatible con resaltado de línea.

+0

Para información: para * no en línea *, la solución más simple es poner un carácter de espacio al comienzo de la línea. – Wikis

Respuesta

17

Puede añadir enclose="none" a su <source> etiqueta:

There is <source lang="mylanguage" enclose="none">inline code</source> in this paragraph. 
+0

¡Eso sí funciona! Sin embargo, 1) el fragmento de texto 'code' se ve (demasiado) small (er) y 2) ¿hay alguna manera de decir algo como' code 'y realmente significa' código '? –

+1

Actualización: la etiqueta admitida ahora es ' código en línea' aunque lo anterior aún funciona para compatibilidad. Además, desde [junio de 2015] (https://gerrit.wikimedia.org/r/#/c/218584/) MediaWiki utiliza [Pygments] (https://en.wikipedia.org/wiki/Pygments) en lugar de GeSHi . Para obtener más información, consulte: https://www.mediawiki.org/wiki/Extension:SyntaxHighlight – WinTakeAll

8

La solución más simple está utilizando: <code>put your code here</code>

+0

No estoy seguro de si tiene que ver con la configuración de mi navegador (léase, las fuentes que uso) pero no puedo decir mucho de un diferencia, es decir, distinguir el código del texto normal. –

+0

@NikosAlexandris: intente con otro navegador y presione Ctrl-F5 para forzar una actualización. – Wikis

+0

@Nikos: use estilos CSS personalizados para mejorar el aspecto de sus partes de 'código' (http: // yourwiki/wiki/MediaWiki: Common.css). – mivk

0

En primer lugar, etiquetar los personajes que le interesan con span, code, source, div, p, etc. Por línea con cambios mínimos, lapso es probablemente lo que estás buscando.

En segundo lugar, aplique un estilo a los caracteres etiquetados. Para poner de relieve es probable que desee algo así como background: yellow

Ejemplo:

Highlights like <span style="border:thin solid green; background: yellow;">this</span> really draw the eye.

0

encontré que encierra todo el bloque con el formato <pre></pre> mostró la mejor.

0

Al utilizar <code>inline code</code> o, por ejemplo, <syntaxhighlight lang="groovy" inline>inline code</syntaxhighlight>, funciona escribiendo esto es un verdadero dolor, especialmente si se trata de una gran cantidad de fragmentos de código.

Si la wiki está bajo su control, puede extend its markup. El siguiente ejemplo muestra cómo acortar lo anterior a <c>inline code</c> y <sg>inline code</sg>, respectivamente, utilizando el método tag extensions.

Crear el directorio Customtags para su nueva extensión en su directorio de extensiones MediaWiki (MW_HOME/extensions/). En este directorio crear un archivo customtags.php con el siguiente contenido:

<?php 

$wgHooks['ParserFirstCallInit'][] = 'customtagsInit'; 

function customtagsInit(Parser $parser) { 

    // parameters: custom tag, custom renderer function 
    $parser->setHook('c', 'customRenderShortCode'); 
    $parser->setHook('sg', 'customRenderSourceGroovy'); 

    return true; 
} 

function customRenderSourceGroovy($input, array $args, Parser $parser, PPFrame $frame) { 
    $input = '<syntaxhighlight lang="groovy" inline>' . $input . '</syntaxhighlight>'; 
    $wikiparsed = $parser->recursiveTagParse($input, $frame); 
    return $wikiparsed; 
} 

function customRenderShortCode($input, array $args, Parser $parser, PPFrame $frame) { 
    $wikiparsed = $parser->recursiveTagParse($input, $frame); 
    return '<code>' . $wikiparsed . '</code>'; 
} 

?> 

Finalmente registrar esta extensión en LocalSettings.php y que son buenos para ir:

require_once "$IP/extensions/Customtags/customtags.php"; 

De la misma manera se pueden crear etiquetas cortas para ampliar bloques de código.

Cuestiones relacionadas