Code syntax highlighting
You can color or highlight code snippets within Moodle resources, forum posts etc. To do so you must install the GeSHi (Generic Syntax Highlighter) Filter. This makes the power of GeSHi available in Moodle through the use of a pair of special tags.
You can download the GeSHi filter from here:
To install, unzip that archive into your filter/ directory and then enable it in the admin filter configuration screen.
Instructions for use
WARNING: (This warning applies to Moodle 1.9.4. It may apply to other versions, but I have not tested to confirm) The GeSHI filter, while it does work, when used in conjunction with the HTML Editor, can be quirky, frustrating, and difficult to use. See my reproducible example, below.
Enclose your code in spans like so:
[code lang]your code goes here [/code] [code lang linenumbers]your code with line numbers [/code] [code lang highlight=1,2,6-9]your code with lines 1, 2 and 6 to 9 highlighted "extra" [/code] [code lang linenumbers start=4]start the line numbers at "4" [/code]
To achieve good results in Moodle 1.9.4+, use the following steps:
- Type the GeSHI open/close tags -- "[code php][/code]" -- into the HTML editor (change "php" to another language as required)
- No quotes, just SQUAREBRACKET-c-o-d-e-SPACE-p-h-p-SQUAREBRACKET
- Highlight these open/close GeSHI tags and choose "preformatted"
- Copy code from textual source
- Paste into HTML editor using source-HTML mode (click the "<>" button to switch modes). Paste in-between the [code][/code] brackets
- Save and return to course
- HTML in Moodle
and many others. See the GeSHi homepage for full details.
See the examples above. This filter is still under development so things may change.
The filter has recently been installed on Moodle.org and can be seen in use there. For example see this post:
The GeSHi homepage also has an interactive demo.
This filter used to use <span syntax="language">...</span> as markers for code. However this changed after conflicts with the HTMLArea editor became apparent.
The last development for this filter appears to have been in 2008. Suggestions for new features and bug reports are welcome, please post them in the discussion thread.