2011-02-02 9 views
16

Czy jest dostępne rozszerzenie MediaWiki obsługujące wbudowane podświetlanie składni? (z obsługą fragmentów kodu osadzonych w zwykłych paragrafach tekstowych)Podświetlanie składni inline w MediaWiki

Obecnie używam SyntaxHighlight GeSHi, ale nie jestem pewien, czy obsługuje on podświetlanie wbudowane.

+0

Dla informacji: dla * nie wbudowanego *, najprostszym rozwiązaniem jest umieszczenie znaku spacji na początku linii. – Wikis

Odpowiedz

17

Możesz dodać enclose="none" do <source> tagu:

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

To rzeczywiście działa! Jednak 1) fragment tekstu "kodu" wygląda (zbyt) mały (er) i 2) nie istnieje sposób, aby powiedzieć coś w rodzaju ' kod' i faktycznie oznacza '<źródło lang =" bash "enclose = "none"> kod '? –

+1

Aktualizacja: Obsługiwany znacznik jest teraz " wbudowany kod' chociaż powyższe nadal działa dla kompatybilności. Od [czerwca 2015 r.] (Https://gerrit.wikimedia.org/r/#/c/218584/) MediaWiki używa [Pygments] (https://en.wikipedia.org/wiki/Pygments) zamiast GeSHi . Aby uzyskać więcej informacji, zobacz: https://www.mediawiki.org/wiki/Extension:SyntaxHighlight – WinTakeAll

8

Najprostszym rozwiązaniem jest przy użyciu: <code>put your code here</code>

+0

Nie jestem pewien, czy ma to związek z ustawieniami przeglądarki (czytaj, jakich czcionek używam), ale nie mogę powiedzieć wiele o różnica, tj. odróżnić kod od normalnego tekstu. –

+0

@NikosAlexandris: proszę spróbować innej przeglądarki i Ctrl-F5, aby wymusić odświeżenie. – Wikis

+0

@Nikos: Użyj niestandardowych stylów CSS, aby poprawić wygląd części 'code' (http: // yourwiki/wiki/MediaWiki: Common.css). – mivk

0

First, Tag znaki Ci zależy z span, code, source, div, p, itp inline z minimalnymi zmianami, rozpiętość jest prawdopodobnie tym, czego szukasz.

Po drugie, zastosuj styl do oznaczonych znaków. Na podkreślenie prawdopodobnie chcesz coś podobnego background: yellow

Przykład:

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

0

Okazało się, że otaczająca cały blok <pre></pre> pokazał format najlepszy.

0

Podczas korzystania z <code>inline code</code> lub, na przykład, <syntaxhighlight lang="groovy" inline>inline code</syntaxhighlight>, pisanie w tym jest prawdziwym problemem, zwłaszcza jeśli masz do czynienia z wieloma fragmentami kodu.

Jeśli wiki jest pod Twoją kontrolą, możesz extend its markup. Poniższy przykład pokazuje, jak skrócić powyższe do <c>inline code</c> i <sg>inline code</sg> odpowiednio za pomocą metody tag extensions.

Utwórz katalog Customtags katalogu dla nowego rozszerzenia w katalogu rozszerzeń MediaWiki (MW_HOME/extensions/). W tym katalogu utworzyć plik customtags.php o następującej treści:

<?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>'; 
} 

?> 

Wreszcie zarejestrować to rozszerzenie w LocalSettings.php i jesteś dobry, aby przejść:

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

W podobny sposób można tworzyć krótkie znaczniki na większe bloki kodu.