|
|
|
highlight
|
|
|
|
============================
|
|
|
|
|
|
|
|
Highlight is a generic syntax highlighter. highlight currently
|
|
|
|
supports outputting to HTML. highlight is written in CHICKEN Scheme
|
|
|
|
and supports all the languages the 'colorize' egg supports.
|
|
|
|
|
|
|
|
Installation
|
|
|
|
============================
|
|
|
|
|
|
|
|
> wget http://code.thintz.com/highlight/snapshot/highlight-master.tar.gz
|
|
|
|
> tar xf highlight-master.tar.gz
|
|
|
|
> cd highlight-master
|
|
|
|
> sudo chicken-install
|
|
|
|
|
|
|
|
Example
|
|
|
|
============================
|
|
|
|
|
|
|
|
> cat pigs-fly.scm
|
|
|
|
(display "Do pigs fly? ")
|
|
|
|
|
|
|
|
(if (equal? (read-line) "yes")
|
|
|
|
(display "Pigs fly!")
|
|
|
|
(display "Sorry, pigs aren't flying today."))
|
|
|
|
|
|
|
|
> highlight pigs-fly.scm < pigs-fly.scm
|
|
|
|
<style>
|
|
|
|
...
|
|
|
|
</style>
|
|
|
|
<span class="code-highlight">
|
|
|
|
<span class="paren1">
|
|
|
|
(
|
|
|
|
<span class="default">display
|
|
|
|
<span class="string">"Do pigs fly? "</span>
|
|
|
|
</span>
|
|
|
|
)
|
|
|
|
</span>
|
|
|
|
...
|
|
|
|
</span>
|
|
|
|
|
|
|
|
Usage
|
|
|
|
============================
|
|
|
|
|
|
|
|
highlight takes one argument, the filename. highlight then reads from
|
|
|
|
standard input until end-of-file and writes to standard output.
|
|
|
|
highlight attempts to guess at the language to use for the
|
|
|
|
highlighting but if it fails writes plain HTML without any
|
|
|
|
highlighting.
|
|
|
|
|
|
|
|
Guessing the Language
|
|
|
|
============================
|
|
|
|
|
|
|
|
highlight attempts to guess what language to use for the syntax
|
|
|
|
highlighting based on a number of criteria. highlight first checks for
|
|
|
|
an emacs file local variable that specifies the major mode to use and
|
|
|
|
if it finds one maps that to the language to use for highlighting.
|
|
|
|
Note that it currently only checks the first line of the input. It
|
|
|
|
supports both the single variable form and extended form. So both '-*-
|
|
|
|
scheme -*-' and '-*- mode: scheme -*-' work. If it can't find an emacs
|
|
|
|
file local variable for the major mode it instead guesses based on the
|
|
|
|
file extension of the filename provided as its first argument. If it
|
|
|
|
still can't figure out what language it uses it will not syntax
|
|
|
|
highlight and instead output plain HTML.
|
|
|
|
|
|
|
|
Supported Languages
|
|
|
|
============================
|
|
|
|
|
|
|
|
The supported languages depends solely on the languages the 'colorize'
|
|
|
|
egg supports. That list can be found here
|
|
|
|
<http://wiki.call-cc.org/eggref/4/colorize>
|
|
|
|
|
|
|
|
As of the latest update of the highlight library these languages are
|
|
|
|
supported:
|
|
|
|
|
|
|
|
* Basic Lisp
|
|
|
|
* Scheme
|
|
|
|
* Emacs Lisp
|
|
|
|
* Lisp
|
|
|
|
* C
|
|
|
|
* C++
|
|
|
|
* Java
|
|
|
|
* C
|
|
|
|
* Erlang
|
|
|
|
* Python
|
|
|
|
* Ruby
|
|
|
|
* Haskell
|
|
|
|
* Unified Context Diff
|
|
|
|
* Cascading Style Sheets (CSS)
|
|
|
|
* Extensible Markup Language (XML)
|
|
|
|
* (Extensible) HyperText Markup Language ((X)HTML)
|
|
|
|
|
|
|
|
License
|
|
|
|
============================
|
|
|
|
|
|
|
|
highlight is released under the unlicense license. See the LICENSE
|
|
|
|
file for the complete license and <http://unlicense.org/> for more
|
|
|
|
info. In summary, you can do whatever you want with highlight
|
|
|
|
including re-licensing.
|