Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/crazy-max/dokuwiki-plugin-syntaxhighlighter4
SyntaxHighlighter4 plugin for DokuWiki
https://github.com/crazy-max/dokuwiki-plugin-syntaxhighlighter4
brushes clipboard dokuwiki syntaxhighlighter
Last synced: 5 days ago
JSON representation
SyntaxHighlighter4 plugin for DokuWiki
- Host: GitHub
- URL: https://github.com/crazy-max/dokuwiki-plugin-syntaxhighlighter4
- Owner: crazy-max
- License: other
- Created: 2016-06-13T10:24:06.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-09-11T06:27:07.000Z (about 1 year ago)
- Last Synced: 2024-10-18T07:32:08.294Z (26 days ago)
- Topics: brushes, clipboard, dokuwiki, syntaxhighlighter
- Language: PHP
- Homepage: http://bit.ly/2vfZ9jG
- Size: 1020 KB
- Stars: 54
- Watchers: 10
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
## About
This plugin is an alternative to GeSHi server-side code highlighting of DokuWiki with client-side [SyntaxHighlighter](https://github.com/syntaxhighlighter/syntaxhighlighter) by Alex Gorbatchev.
The subfolder `syntaxhighlighter4/dist` contains a build of [SyntaxHighlighter 4.x](https://github.com/syntaxhighlighter/syntaxhighlighter).
For compatibility and conflicts with others plugins, please refer to the official [DokuWiki SyntaxHighlighter4 plugin page](http://www.dokuwiki.org/plugin:syntaxhighlighter4).
## Download and Installation
Download and install the plugin using the [Plugin Manager](https://www.dokuwiki.org/plugin:plugin) using the download link given above. Refer to [Plugins](https://www.dokuwiki.org/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!
## Syntax and Usage
```
... code/text ...
```
### Brush
The brush (language) that SyntaxHighlighter should use. Defaults to "text" if none is provided.
See the section [brushes and themes](#list-of-brushes-and-themes) for a complete list of available brushes.### Options
Semicolon separated options for SyntaxHighlighter, see [SyntaxHighlighter Configuration](https://github.com/syntaxhighlighter/syntaxhighlighter/wiki/Configuration#per-element-configuration).
The plugin handles the [Block Title from SyntaxHighlighter 3](http://alexgorbatchev.com/SyntaxHighlighter/whatsnew.html#blocktitle) as an option, i.e. `title: ;`.### Defaults
[Syntaxhighlighter default options](https://github.com/syntaxhighlighter/syntaxhighlighter/wiki/Configuration#options) can be overrided via the [Config Manager](https://www.dokuwiki.org/plugin:config) :
* **autoLinks**: Allows you to turn detection of links in the highlighted element on and off. If the option is turned off, URLs won’t be clickable `(default true)`
* **firstLine**: Allows you to change the first (starting) line number `(default 1)`
* **gutter**: Allows you to turn gutter with line numbers `(default true)`
* **htmlScript**: Allows you to highlight a mixture of HTML/XML code and a script which is very common in web development. Setting this value to true requires that you have shBrushXml.js loaded and that the brush you are using supports this feature `(default false)`
* **smartTabs**: Allows you to turn smart tabs feature on and off `(default true)`
* **tabSize**: Allows you to adjust tab size `(default 4)`
* **override**: List of tags to override## Example
```
/**
* 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 .= '' . $renderer->_xmlEntities($content) . '';
} else {
$renderer->file($content);
}return true;
}```
Expected result:
![](resources/example.png)
## Features
### Copy to clipboard
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.### Highlight a range of lines
Example:
```
/**
* [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" => ""
);
}```
Expected result:
![](resources/highlight-range.png)
### List of brushes and themes
* **[Official brushes](https://github.com/syntaxhighlighter/syntaxhighlighter/wiki/Brushes-and-Themes)**
* applescript
* as3
* base
* bash
* coldfusion
* cpp
* csharp
* css
* delphi
* diff
* erlang
* groovy
* haxe
* java
* javafx
* javascript
* perl
* php
* plain
* powershell
* python
* ruby
* sass
* scala
* sql
* swift
* tap
* typescript
* vb
* xml
* **Custom brushes**
* halcon
* IEC61131
* kotlin
* latex
* Makefile
* mel
* objective-c
* yaml
* **[Official themes](https://github.com/syntaxhighlighter/syntaxhighlighter/wiki/Brushes-and-Themes)**
* default
* django
* eclipse
* emacs
* fadetogrey
* mdultra
* midnight
* rdark
* swift
* **Custom themes**## How can I help ?
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**](https://github.com/sponsors/crazy-max) :clap: or by making a [Paypal donation](https://www.paypal.me/crazyws) to ensure this journey continues indefinitely! :rocket:
Thanks again for your support, it is much appreciated! :pray:
## License
GPLv2. See `LICENSE` for more details.
Icon credit to [Snip Master](http://www.snipicons.com/).