This plugin is an alternative to GeSHi server-side code highlighting of DokuWiki with client-side SyntaxHighlighter by Alex Gorbatchev.
The subfolder syntaxhighlighter4/dist
contains a build of SyntaxHighlighter 4.x.
For compatibility and conflicts with others plugins, please refer to the official DokuWiki SyntaxHighlighter4 plugin page.
Download and install the plugin using the Plugin Manager using the download link given above. Refer to Plugins on how to install plugins manually.
If you install this plugin manually, make sure it is installed in lib/plugins/syntaxhighlighter4/
. If the folder is called different it will not work!
<sxh [brush][; options]>
... code/text ...
</sxh>
The brush (language) that SyntaxHighlighter should use. Defaults to "text" if none is provided.
See the section brushes and themes for a complete list of available brushes.
Semicolon separated options for SyntaxHighlighter, see SyntaxHighlighter Configuration.
The plugin handles the Block Title from SyntaxHighlighter 3 as an option, i.e. title: <title string>;
.
Syntaxhighlighter default options can be overrided via the Config Manager :
(default true)
(default 1)
(default true)
(default false)
(default true)
(default 4)
<sxh php; first-line: 89; highlight: [106,107]; title: New title attribute in action>
/**
* Render xhtml output or metadata
*
* @param string $mode Renderer mode (supported modes: xhtml)
* @param Doku_Renderer $renderer The renderer
* @param array $data The data from the handler() function
* @return bool If rendering was successful.
*/
public function render($mode, Doku_Renderer &$renderer, $data) {
if($mode != 'xhtml') return false;
if (count($data) != 3) {
return true;
}
list($syntax, $attr, $content) = $data;
if ($syntax == 'sxh') {
$title = $this->procTitle($attr);
$highlight = $this->procHighlight($attr);
$renderer->doc .= '<pre class="brush: ' . strtolower($attr . $highlight) . '"' . $title . '>' . $renderer->_xmlEntities($content) . '</pre>';
} else {
$renderer->file($content);
}
return true;
}
</sxh>
Expected result:
Double click anywhere inside SyntaxHighlighter code area to highlight the text and then copy it using Ctrl/Cmd+C or mouse right click > Copy.
Click outside the code area to restore highlighting.
Example:
<sxh php; highlight: [11-15]>
/**
* [Custom event handler which performs action]
*
* @param Doku_Event $event event object by reference
* @param mixed $param [the parameters passed as fifth argument to register_hook() when this
* handler was registered]
* @return void
*/
public function handle_metaheader(Doku_Event &$event, $param) {
// Add SyntaxHighlighter theme.
$event->data['link'][] = array('rel' => 'stylesheet',
'type' => 'text/css',
'href' => DOKU_BASE . 'lib/plugins/syntaxhighlighter4/dist/'.$this->getConf('theme'),
);
// Register SyntaxHighlighter javascript.
$event->data["script"][] = array("type" => "text/javascript",
"src" => DOKU_BASE . "lib/plugins/syntaxhighlighter4/dist/syntaxhighlighter.js",
"_data" => ""
);
}
</sxh>
Expected result:
All kinds of contributions are welcome :raised_hands:! The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon: You can also support this project by becoming a sponsor on GitHub :clap: or by making a Paypal donation to ensure this journey continues indefinitely! :rocket:
Thanks again for your support, it is much appreciated! :pray:
GPLv2. See LICENSE
for more details.
Icon credit to Snip Master.