Syntax Highlighting TWiki Plugin
The Syntax Highlighting Twiki Plugin is used to emphasize the rendering of your twiki text according to several languages.
It currently uses
enscript to render its output.
It supports the following languages :
- ada
- asm
- awk
- bash
- c
- changelog
- c++
- csh
- delphi
- diff
- diffs
- diffu
- elisp
- fortran
- fortran_pp
- haskell
- html
- idl
- inf
- java
- javascript
- ksh
- m4
- mail
- makefile
- maple
- matlab
- modula_2
- nested
- nroff
- objc
- outline
- pascal
- perl
- postscript
- python
- rfc
- scheme
- sh
- skill
- sql
- states
- synopsys
- tcl
- tcsh
- tex
- vba
- verilog
- vhdl
- vrml
- wmlscript
- xml (kind of - emulated as html)
- zsh
Syntax Rules
To enable syntax highlighting on some text, just type :
%SYNTAX "language" [numbered]%
some text belonging to the language
%ENDSYNTAX%
where language is one of the list above, and numbered an optional keyword triggering the line numbering feature.
Notice that the
%SYNTAX% and
%ENDSYNTAX% tags must be left alone on one single line.
Example
The following text :
%SYNTAX{"c++"}%
#include <iostream>
int main()
{
std::cout << "Hello, world." << std::endl;
}
%ENDSYNTAX%
gives :
2 Syntax Highlighting: internal error
If you do not see a nice colorized piece of code above this, you should check if the plugin is well installed.
You can also output numbered lines starting at 10 with this text:
%SYNTAX{"sh" numbered:10}%
#!/bin/sh
languages=`enscript --help-highlight | grep 'Name:' | cut -d ' ' -f 2`
for l in $languages; do
cat << EOF
* $l
EOF
done
%ENDSYNTAX%
which outputs:
2 Syntax Highlighting: internal error
SyntaxHighlightingPlugin Settings
Plugin settings are stored as preferences variables. To reference
a plugin setting write
%<plugin>_<setting>%, i.e.
%SYNTAXHIGHLIGHTINGPLUGIN_SHORTDESCRIPTION%
- One line description, is shown in the TextFormattingRules topic:
- Set SHORTDESCRIPTION = This Plugin is used to emphasize the rendering of your twiki text according to several languages.
- Debug plugin: (See output in
data/debug.txt)
- Container: Allows you to determine the block container to hold the output from this plugin. Add in any valid xhtml, and include _OUTPUT_ ([underscore][underscore]OUTPUT[underscore][underscore]) to tell the plugin where to throw the formateed output. For example, if you want your code blocks output into a div with a class of
twikiSyntaxHighlightingBlock, you could use a CONTAINER value of <div class="twikiSyntaxHighlightingBlock">__OUTPUT__</div>
- Enscript: This plugin defaults to settings that assume enscript is on your path and that it is version 1.63. If you have a different version (especially earlier), change these settings.
- Set ENSCRIPT_PATH =
- Set ENSCRIPT_VERSION =
Plugin Installation Instructions
- Make sure you have GNU enscript 1.6.3 or above installed.
- Unzip the
SyntaxHighlighting.zip package in your TWiki installation directory.
- If the installation is correct, you should see some highlighted text in this page.
- If you want support for additional languages (for customized or future enscript versions), you must edit the plugin file and add your languages to the languages array. (Make sure that your
enscript version supports the languages you add.)
Known Bugs
Enscript oddities
%SYNTAX{"sh"}%
# youpi
%ENDSYNTAX%
gives
2 Syntax Highlighting: internal error
Because
enscript strangely adds an extra line (for closing its emphasizing markers) between the matched <pre> </pre> to its html output.
Working around such a weird behavior is ... not planned.
WikiWords? on last line
%SYNTAX{"sh"}%
UnmatchedWikiword :)
MatchedWikiWord :(
%ENDSYNTAX%
gives
2 Syntax Highlighting: internal error
Adding a newline at the end of input stops TWiki in his greedy matching, but this workaround is not an acceptable solution. Feel free to find another one ....
Plugin Info
Related Topics: TWikiPreferences,
TWikiPlugins,
EmptyPlugin?
--
NicolasTisserand? - 12 Jul 2002