diff --git a/HsColour.hs b/HsColour.hs
--- a/HsColour.hs
+++ b/HsColour.hs
@@ -62,6 +62,7 @@
       anchors   = useDefault False       id           [ b | Anchors b <- good ]
       partial   = useDefault False       id           [ b | Partial b <- good ]
       lhs       = useDefault False       id           [ b | LHS b <- good ] 
+      title     = useDefault "Haskell code" id        [ f | Input f <- good ]
   when (not (null bad))
        (errorOut ("Unrecognised option(s): "++unwords bad++"\n"++usage prog))
   when (Help `elem` good)    (do putStrLn (usage prog); exitSuccess)
@@ -73,7 +74,7 @@
                   ++unwords (map show formats)))
   when (length outFile > 1)
        (errorOut ("Can only have one output file at a time."))
-  ioWrapper (hscolour output pref anchors partial lhs)
+  ioWrapper (hscolour output pref anchors partial lhs title)
   hFlush stdout
 
   where
diff --git a/Language/Haskell/HsColour.hs b/Language/Haskell/HsColour.hs
--- a/Language/Haskell/HsColour.hs
+++ b/Language/Haskell/HsColour.hs
@@ -1,5 +1,5 @@
--- | This is a library with colourises Haskell code. 
---   It currently has four output formats: 
+-- | This is a library which colourises Haskell code.
+--   It currently has five output formats:
 --
 -- * ANSI terminal codes
 --
@@ -31,31 +31,32 @@
 
 -- | Colourise Haskell source code with the given output format.
 hscolour :: Output      -- ^ Output format.
-         -> ColourPrefs -- ^ Colour preferences for formats that support it.
+         -> ColourPrefs -- ^ Colour preferences (for formats that support them).
          -> Bool        -- ^ Whether to include anchors.
          -> Bool        -- ^ Whether output document is partial or complete.
          -> Bool        -- ^ Whether input document is literate haskell or not
+         -> String	-- ^ Title for output.
          -> String      -- ^ Haskell source code.
          -> String      -- ^ Coloured Haskell source code.
-hscolour output pref anchor partial False = 
-    hscolour' output pref anchor partial
-hscolour output pref anchor partial True = 
-    concatMap chunk . joinL . map lhsClassify . inlines
+hscolour output pref anchor partial literate title
+    | literate  = concatMap chunk . joinL . map lhsClassify . inlines
+    | otherwise = hscolour' output pref anchor partial title
   where
     chunk (Literate c) = c
-    chunk (Code c)     = hscolour' output pref anchor True c
+    chunk (Code c)     = hscolour' output pref anchor True title c
 
 hscolour' :: Output      -- ^ Output format.
-          -> ColourPrefs -- ^ Colour preferences for formats that support it.
+          -> ColourPrefs -- ^ Colour preferences (for formats that support them).
           -> Bool        -- ^ Whether to include anchors.
           -> Bool        -- ^ Whether output document is partial or complete.
+          -> String      -- ^ Title for output.
           -> String      -- ^ Haskell source code.
           -> String      -- ^ Coloured Haskell source code.
-hscolour' TTY   pref _      _       = TTY.hscolour pref
-hscolour' MIRC  pref _      _       = MIRC.hscolour pref
-hscolour' LaTeX pref _      partial = LaTeX.hscolour pref partial
-hscolour' HTML  pref anchor partial = HTML.hscolour pref anchor partial
-hscolour' CSS   _    anchor partial = CSS.hscolour anchor partial
+hscolour' TTY   pref _      _       _   = TTY.hscolour pref
+hscolour' MIRC  pref _      _       _   = MIRC.hscolour pref
+hscolour' LaTeX pref _      partial _   = LaTeX.hscolour pref partial
+hscolour' HTML  pref anchor partial top = HTML.hscolour pref anchor partial top
+hscolour' CSS   _    anchor partial top = CSS.hscolour anchor partial top
 
 -- | Separating literate files into code\/comment chunks.
 data Literate = Code {unL :: String} | Literate {unL :: String}
diff --git a/Language/Haskell/HsColour/ANSI.hs b/Language/Haskell/HsColour/ANSI.hs
--- a/Language/Haskell/HsColour/ANSI.hs
+++ b/Language/Haskell/HsColour/ANSI.hs
@@ -1,4 +1,4 @@
--- Partially taken from Hugs AnsiScreen.hs library:
+-- | Partially taken from Hugs AnsiScreen.hs library:
 module Language.Haskell.HsColour.ANSI
   ( highlightOn
   , highlightOff
@@ -25,8 +25,10 @@
 type Pos           = (Int,Int)
 
 at        :: Pos -> String -> String
+-- | Move the screen cursor to the given position.
 goto      :: Int -> Int -> String
 home      :: String
+-- | Clear the screen.
 cls       :: String
 
 at (x,y) s  = goto x y ++ s
@@ -65,6 +67,7 @@
   fromEnum (Foreground c) = 30 + fromEnum c
   fromEnum (Background c) = 40 + fromEnum c
 
+-- | Make the given string appear with all of the listed highlights
 highlight :: [Highlight] -> String -> String
 highlight attrs s = highlightOn attrs ++ s ++ highlightOff
 
@@ -75,12 +78,12 @@
 highlightOff = "\ESC[0m"
 
 
--- An infinite supply of colours.
+-- | An infinite supply of colours.
 colourCycle :: [Colour]
 colourCycle = cycle [Red,Blue,Magenta,Green,Cyan]
 
 
--- Scrolling
+-- | Scrolling
 enableScrollRegion :: Int -> Int -> String
 enableScrollRegion start end = "\ESC["++show start++';':show end++"r"
 
diff --git a/Language/Haskell/HsColour/CSS.hs b/Language/Haskell/HsColour/CSS.hs
--- a/Language/Haskell/HsColour/CSS.hs
+++ b/Language/Haskell/HsColour/CSS.hs
@@ -10,11 +10,12 @@
 hscolour :: Bool   -- ^ Whether to include anchors.
          -> Bool   -- ^ Whether output should be partial
                    --   (= no stylesheet link will be included.)
+         -> String -- ^ Title for HTML page.
          -> String -- ^ Haskell source code.
          -> String -- ^ An HTML document containing the coloured 
                    --   Haskell source code.
-hscolour anchor partial =
-  (if partial then id else top'n'tail)
+hscolour anchor partial title =
+  (if partial then id else top'n'tail title)
   . pre
   . (if anchor 
         then renderNewLinesAnchors
@@ -23,8 +24,8 @@
         else concatMap renderToken)
   . tokenise
 
-top'n'tail :: String -> String
-top'n'tail  = (cssPrefix++) . (++cssSuffix)
+top'n'tail :: String -> String -> String
+top'n'tail title  = (cssPrefix title ++) . (++cssSuffix)
 
 pre :: String -> String
 pre = ("<pre>"++) . (++"</pre>")
@@ -55,12 +56,12 @@
 cssClass _        = ""
 
 
-cssPrefix = unlines
+cssPrefix title = unlines
     ["<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
     ,"<html>"
     ,"<head>"
     ,"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"
-    ,"<title>Haskell Code by HsColour</title>"
+    ,"<title>"++title++"</title>"
     ,"<link type='text/css' rel='stylesheet' href='hscolour.css' />"
     ,"</head>"
     ,"<body>"
diff --git a/Language/Haskell/HsColour/Classify.hs b/Language/Haskell/HsColour/Classify.hs
--- a/Language/Haskell/HsColour/Classify.hs
+++ b/Language/Haskell/HsColour/Classify.hs
@@ -6,8 +6,8 @@
 import Char
 import List
 
--- Lex Haskell source code into an annotated token stream, without
--- discarding any characters or layout.
+-- | Lex Haskell source code into an annotated token stream, without
+--   discarding any characters or layout.
 tokenise :: String -> [(TokenType,String)]
 tokenise str = 
     let chunks = glue . chunk $ str 
@@ -71,7 +71,7 @@
 eolcomment (c:s)      = (c:cs, s') where (cs,s') = eolcomment s
 eolcomment []         = ([],[])
 
--- Classify tokens
+-- | Classification of tokens as lexical entities
 data TokenType =
   Space | Keyword | Keyglyph | Layout | Comment | Conid | Varid |
   Conop | Varop   | String   | Char   | Number  | Cpp   | Error |
diff --git a/Language/Haskell/HsColour/ColourHighlight.hs b/Language/Haskell/HsColour/ColourHighlight.hs
--- a/Language/Haskell/HsColour/ColourHighlight.hs
+++ b/Language/Haskell/HsColour/ColourHighlight.hs
@@ -3,9 +3,11 @@
   , Highlight(..)
   ) where
 
+-- | Colours supported by ANSI codes.
 data Colour = Black | Red | Green | Yellow | Blue | Magenta | Cyan | White
   deriving (Eq,Show,Read,Enum)
 
+-- | Types of highlighting supported by ANSI codes.
 data Highlight =
     Normal
   | Bold
diff --git a/Language/Haskell/HsColour/Colourise.hs b/Language/Haskell/HsColour/Colourise.hs
--- a/Language/Haskell/HsColour/Colourise.hs
+++ b/Language/Haskell/HsColour/Colourise.hs
@@ -47,6 +47,8 @@
                                   ++": reverting to defaults")
                 return defaultColourPrefs
 
+-- | Read colour preferences from .hscolour file in the current directory, or failing that,
+--   from \$HOME\/.hscolour, and failing that, returns a default set of prefs.
 readColourPrefs :: IO ColourPrefs
 readColourPrefs = catch
   (do val <- readFile ".hscolour"
@@ -57,7 +59,7 @@
         parseColourPrefs (home++"/.hscolour") val)
     (\_-> return defaultColourPrefs))
 
--- Convert classification to colour highlights.
+-- | Convert token classification to colour highlights.
 colourise :: ColourPrefs -> TokenType -> [Highlight]
 colourise pref Space    = [Normal]
 colourise pref Comment  = comment pref
diff --git a/Language/Haskell/HsColour/HTML.hs b/Language/Haskell/HsColour/HTML.hs
--- a/Language/Haskell/HsColour/HTML.hs
+++ b/Language/Haskell/HsColour/HTML.hs
@@ -15,10 +15,11 @@
 hscolour :: ColourPrefs -- ^ Colour preferences.
          -> Bool        -- ^ Whether to include anchors.
          -> Bool        -- ^ Whether output should be partial.
+         -> String      -- ^ Title for webpage output.
          -> String      -- ^ Haskell source code.
          -> String      -- ^ Coloured Haskell source code.
-hscolour pref anchor partial = 
-    (if partial then id else top'n'tail)
+hscolour pref anchor partial title = 
+    (if partial then id else top'n'tail title)
     . pre
     . (if anchor then renderNewLinesAnchors
                       . concatMap (renderAnchors (renderToken pref))
@@ -26,8 +27,8 @@
                  else concatMap (renderToken pref))
     . tokenise
 
-top'n'tail :: String -> String
-top'n'tail = (htmlHeader++) . (++htmlClose)
+top'n'tail :: String -> String -> String
+top'n'tail title = (htmlHeader title ++) . (++htmlClose)
 
 pre :: String -> String
 pre = ("<pre>"++) . (++"</pre>")
@@ -79,6 +80,13 @@
 escape (c:cs)   = c: escape cs
 escape []       = []
 
-htmlHeader = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"
-             ++"\n<html>\n"
-htmlClose  = "\n</html>"
+htmlHeader title = unlines
+  [ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"
+  , "<html>"
+  , "<head>"
+  ,"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"
+  , "<title>"++title++"</title>"
+  , "</head>"
+  , "<body>"
+  ]
+htmlClose  = "\n</body>\n</html>"
diff --git a/Language/Haskell/HsColour/MIRC.hs b/Language/Haskell/HsColour/MIRC.hs
--- a/Language/Haskell/HsColour/MIRC.hs
+++ b/Language/Haskell/HsColour/MIRC.hs
@@ -1,5 +1,5 @@
 -- | Formats Haskell source code using mIRC codes.
---   (see http://irssi.org/documentation/formats)
+--   (see http:\/\/irssi.org\/documentation\/formats)
 module Language.Haskell.HsColour.MIRC (hscolour) where
 
 import Language.Haskell.HsColour.Classify as Classify
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 LIBRARY	= hscolour
-VERSION	= 1.9
+VERSION	= 1.10
 
 DIRS	= Language/Haskell/HsColour
 
diff --git a/docs/hscolour/Language-Haskell-HsColour-ANSI.html b/docs/hscolour/Language-Haskell-HsColour-ANSI.html
--- a/docs/hscolour/Language-Haskell-HsColour-ANSI.html
+++ b/docs/hscolour/Language-Haskell-HsColour-ANSI.html
@@ -63,14 +63,241 @@
 ></TD
 ></TR
 ><TR
+><TD CLASS="section1"
+>Description</TD
+></TR
+><TR
+><TD CLASS="doc"
+>Partially taken from Hugs AnsiScreen.hs library:
+</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
 ><TR
+><TD CLASS="section1"
+>Synopsis</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
 ><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Ahighlight"
+>highlight</A
+> :: [<A HREF="Language-Haskell-HsColour-ANSI.html#t%3AHighlight"
+>Highlight</A
+>] -&gt; String -&gt; String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Acls"
+>cls</A
+> :: String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Agoto"
+>goto</A
+> :: Int -&gt; Int -&gt; String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AHighlight"
+>Highlight</A
+> </TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <A HREF="#v%3ANormal"
+>Normal</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ABold"
+>Bold</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ADim"
+>Dim</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AUnderscore"
+>Underscore</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ABlink"
+>Blink</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AReverseVideo"
+>ReverseVideo</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AConcealed"
+>Concealed</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AForeground"
+>Foreground</A
+> <A HREF="Language-Haskell-HsColour-ANSI.html#t%3AColour"
+>Colour</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ABackground"
+>Background</A
+> <A HREF="Language-Haskell-HsColour-ANSI.html#t%3AColour"
+>Colour</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AColour"
+>Colour</A
+> </TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <A HREF="#v%3ABlack"
+>Black</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ARed"
+>Red</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AGreen"
+>Green</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AYellow"
+>Yellow</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ABlue"
+>Blue</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AMagenta"
+>Magenta</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ACyan"
+>Cyan</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AWhite"
+>White</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AcolourCycle"
+>colourCycle</A
+> :: [<A HREF="Language-Haskell-HsColour-ANSI.html#t%3AColour"
+>Colour</A
+>]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AenableScrollRegion"
+>enableScrollRegion</A
+> :: Int -&gt; Int -&gt; String</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
 ><TD CLASS="section1"
 >Documentation</TD
 ></TR
@@ -99,6 +326,11 @@
 ></TD
 ></TR
 ><TR
+><TD CLASS="doc"
+>Make the given string appear with all of the listed highlights
+</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
@@ -121,6 +353,11 @@
 ></TD
 ></TR
 ><TR
+><TD CLASS="doc"
+>Clear the screen.
+</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
@@ -143,6 +380,11 @@
 ></TD
 ></TR
 ><TR
+><TD CLASS="doc"
+>Move the screen cursor to the given position.
+</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
@@ -170,6 +412,11 @@
 ><TD CLASS="body"
 ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
 ><TR
+><TD CLASS="ndoc"
+>Types of highlighting supported by ANSI codes.
+</TD
+></TR
+><TR
 ><TD CLASS="section4"
 >Constructors</TD
 ></TR
@@ -341,6 +588,11 @@
 ><TD CLASS="body"
 ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
 ><TR
+><TD CLASS="ndoc"
+>Colours supported by ANSI codes.
+</TD
+></TR
+><TR
 ><TD CLASS="section4"
 >Constructors</TD
 ></TR
@@ -495,6 +747,11 @@
 ></TD
 ></TR
 ><TR
+><TD CLASS="doc"
+>An infinite supply of colours.
+</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
@@ -515,6 +772,11 @@
 ></TR
 ></TABLE
 ></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Scrolling
+</TD
 ></TR
 ><TR
 ><TD CLASS="s15"
diff --git a/docs/hscolour/Language-Haskell-HsColour-CSS.html b/docs/hscolour/Language-Haskell-HsColour-CSS.html
--- a/docs/hscolour/Language-Haskell-HsColour-CSS.html
+++ b/docs/hscolour/Language-Haskell-HsColour-CSS.html
@@ -90,17 +90,7 @@
 ><TD CLASS="decl"
 ><A HREF="#v%3Ahscolour"
 >hscolour</A
-> :: Bool -&gt; String -&gt; String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AhscolourFragment"
->hscolourFragment</A
-> :: Bool -&gt; String -&gt; String</TD
+> :: Bool -&gt; Bool -&gt; String -&gt; String -&gt; String</TD
 ></TR
 ></TABLE
 ></TD
@@ -142,62 +132,22 @@
 ><TD CLASS="arg"
 >:: Bool</TD
 ><TD CLASS="rdoc"
->Whether to include anchors
+>Whether to include anchors.
 </TD
 ></TR
 ><TR
 ><TD CLASS="arg"
->-&gt; String</TD
+>-&gt; Bool</TD
 ><TD CLASS="rdoc"
->Haskell source code.
+>Whether output should be partial
+   (= no stylesheet link will be included.)
 </TD
 ></TR
 ><TR
 ><TD CLASS="arg"
 >-&gt; String</TD
 ><TD CLASS="rdoc"
->An HTML document containing the coloured 
-   Haskell source code.
-</TD
-></TR
-><TR
-><TD CLASS="ndoc" COLSPAN="2"
->Formats Haskell source code as a complete HTML document with CSS.
-</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AhscolourFragment"
-></A
-><B
->hscolourFragment</B
-></TD
-><TD CLASS="declbut"
-><A HREF="Language/Haskell/HsColour/CSS.html#hscolourFragment"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
->:: Bool</TD
-><TD CLASS="rdoc"
->Whether to include anchors
+>Title for HTML page.
 </TD
 ></TR
 ><TR
@@ -211,14 +161,13 @@
 ><TD CLASS="arg"
 >-&gt; String</TD
 ><TD CLASS="rdoc"
->An HTML fragment containing the coloured 
+>An HTML document containing the coloured 
    Haskell source code.
 </TD
 ></TR
 ><TR
 ><TD CLASS="ndoc" COLSPAN="2"
->Formats Haskell source code as an HTML fragment with CSS.
-   No stylesheet link is included in the output.
+>Formats Haskell source code as a complete HTML document with CSS.
 </TD
 ></TR
 ></TABLE
diff --git a/docs/hscolour/Language-Haskell-HsColour-Classify.html b/docs/hscolour/Language-Haskell-HsColour-Classify.html
--- a/docs/hscolour/Language-Haskell-HsColour-Classify.html
+++ b/docs/hscolour/Language-Haskell-HsColour-Classify.html
@@ -67,10 +67,146 @@
 ></TD
 ></TR
 ><TR
+><TD CLASS="section1"
+>Synopsis</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
 ><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3ATokenType"
+>TokenType</A
+> </TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <A HREF="#v%3ASpace"
+>Space</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AKeyword"
+>Keyword</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AKeyglyph"
+>Keyglyph</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ALayout"
+>Layout</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AComment"
+>Comment</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AConid"
+>Conid</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AVarid"
+>Varid</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AConop"
+>Conop</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AVarop"
+>Varop</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AString"
+>String</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AChar"
+>Char</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ANumber"
+>Number</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ACpp"
+>Cpp</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AError"
+>Error</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ADefinition"
+>Definition</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Atokenise"
+>tokenise</A
+> :: String -&gt; [(<A HREF="Language-Haskell-HsColour-Classify.html#t%3ATokenType"
+>TokenType</A
+>, String)]</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
 ><TD CLASS="section1"
 >Documentation</TD
 ></TR
@@ -102,6 +238,11 @@
 ><TD CLASS="body"
 ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
 ><TR
+><TD CLASS="ndoc"
+>Classification of tokens as lexical entities
+</TD
+></TR
+><TR
 ><TD CLASS="section4"
 >Constructors</TD
 ></TR
@@ -230,6 +371,16 @@
 ></TR
 ><TR
 ><TD CLASS="arg"
+><A NAME="v%3ACpp"
+></A
+><B
+>Cpp</B
+></TD
+><TD CLASS="rdoc"
+></TD
+></TR
+><TR
+><TD CLASS="arg"
 ><A NAME="v%3AError"
 ></A
 ><B
@@ -238,6 +389,16 @@
 ><TD CLASS="rdoc"
 ></TD
 ></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ADefinition"
+></A
+><B
+>Definition</B
+></TD
+><TD CLASS="rdoc"
+></TD
+></TR
 ></TABLE
 ></TD
 ></TR
@@ -292,6 +453,12 @@
 ></TR
 ></TABLE
 ></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Lex Haskell source code into an annotated token stream, without
+   discarding any characters or layout.
+</TD
 ></TR
 ><TR
 ><TD CLASS="s15"
diff --git a/docs/hscolour/Language-Haskell-HsColour-ColourHighlight.html b/docs/hscolour/Language-Haskell-HsColour-ColourHighlight.html
--- a/docs/hscolour/Language-Haskell-HsColour-ColourHighlight.html
+++ b/docs/hscolour/Language-Haskell-HsColour-ColourHighlight.html
@@ -67,10 +67,174 @@
 ></TD
 ></TR
 ><TR
+><TD CLASS="section1"
+>Synopsis</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
 ><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AColour"
+>Colour</A
+> </TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <A HREF="#v%3ABlack"
+>Black</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ARed"
+>Red</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AGreen"
+>Green</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AYellow"
+>Yellow</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ABlue"
+>Blue</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AMagenta"
+>Magenta</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ACyan"
+>Cyan</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AWhite"
+>White</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AHighlight"
+>Highlight</A
+> </TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <A HREF="#v%3ANormal"
+>Normal</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ABold"
+>Bold</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ADim"
+>Dim</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AUnderscore"
+>Underscore</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ABlink"
+>Blink</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AReverseVideo"
+>ReverseVideo</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AConcealed"
+>Concealed</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AForeground"
+>Foreground</A
+> <A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AColour"
+>Colour</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ABackground"
+>Background</A
+> <A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AColour"
+>Colour</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
 ><TD CLASS="section1"
 >Documentation</TD
 ></TR
@@ -102,6 +266,11 @@
 ><TD CLASS="body"
 ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
 ><TR
+><TD CLASS="ndoc"
+>Colours supported by ANSI codes.
+</TD
+></TR
+><TR
 ><TD CLASS="section4"
 >Constructors</TD
 ></TR
@@ -258,6 +427,11 @@
 ><TR
 ><TD CLASS="body"
 ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="ndoc"
+>Types of highlighting supported by ANSI codes.
+</TD
+></TR
 ><TR
 ><TD CLASS="section4"
 >Constructors</TD
diff --git a/docs/hscolour/Language-Haskell-HsColour-Colourise.html b/docs/hscolour/Language-Haskell-HsColour-Colourise.html
--- a/docs/hscolour/Language-Haskell-HsColour-Colourise.html
+++ b/docs/hscolour/Language-Haskell-HsColour-Colourise.html
@@ -120,10 +120,14 @@
 >char</A
 >, <A HREF="#v%3Anumber"
 >number</A
+>, <A HREF="#v%3Acpp"
+>cpp</A
 >, <A HREF="#v%3Aselection"
 >selection</A
 >, <A HREF="#v%3Avariantselection"
 >variantselection</A
+>, <A HREF="#v%3Adefinition"
+>definition</A
 > :: [<A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AHighlight"
 >Highlight</A
 >]</TD
@@ -278,6 +282,10 @@
 ></A
 ><B
 >number</B
+>, <A NAME="v%3Acpp"
+></A
+><B
+>cpp</B
 >, <A NAME="v%3Aselection"
 ></A
 ><B
@@ -286,6 +294,10 @@
 ></A
 ><B
 >variantselection</B
+>, <A NAME="v%3Adefinition"
+></A
+><B
+>definition</B
 > :: [<A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AHighlight"
 >Highlight</A
 >]</TD
@@ -357,6 +369,12 @@
 ></TD
 ></TR
 ><TR
+><TD CLASS="doc"
+>Read colour preferences from .hscolour file in the current directory, or failing that,
+   from $HOME/.hscolour, and failing that, returns a default set of prefs.
+</TD
+></TR
+><TR
 ><TD CLASS="s15"
 ></TD
 ></TR
@@ -383,6 +401,11 @@
 ></TR
 ></TABLE
 ></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert token classification to colour highlights.
+</TD
 ></TR
 ><TR
 ><TD CLASS="s15"
diff --git a/docs/hscolour/Language-Haskell-HsColour-General.html b/docs/hscolour/Language-Haskell-HsColour-General.html
new file mode 100644
--- /dev/null
+++ b/docs/hscolour/Language-Haskell-HsColour-General.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Rendered using the Haskell Html Library v0.2-->
+<HTML
+><HEAD
+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
+><TITLE
+>Language.Haskell.HsColour.General</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock.js" TYPE="text/javascript"
+></SCRIPT
+></HEAD
+><BODY
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topbar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
+></TD
+><TD CLASS="title"
+>hscolour</TD
+><TD CLASS="topbut"
+><A HREF="Language/Haskell/HsColour/General.html"
+>Source code</A
+></TD
+><TD CLASS="topbut"
+><A HREF="index.html"
+>Contents</A
+></TD
+><TD CLASS="topbut"
+><A HREF="doc-index.html"
+>Index</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="modulebar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><FONT SIZE="6"
+>Language.Haskell.HsColour.General</FONT
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Documentation</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AdropLast"
+></A
+><B
+>dropLast</B
+> :: Eq a =&gt; a -&gt; [a] -&gt; [a]</TD
+><TD CLASS="declbut"
+><A HREF="Language/Haskell/HsColour/General.html#dropLast"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AdropFirst"
+></A
+><B
+>dropFirst</B
+> :: Eq a =&gt; a -&gt; [a] -&gt; [a]</TD
+><TD CLASS="declbut"
+><A HREF="Language/Haskell/HsColour/General.html#dropFirst"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="botbar"
+>Produced by <A HREF="http://www.haskell.org/haddock/"
+>Haddock</A
+> version 0.8</TD
+></TR
+></TABLE
+></BODY
+></HTML
+>
diff --git a/docs/hscolour/Language-Haskell-HsColour-HTML.html b/docs/hscolour/Language-Haskell-HsColour-HTML.html
--- a/docs/hscolour/Language-Haskell-HsColour-HTML.html
+++ b/docs/hscolour/Language-Haskell-HsColour-HTML.html
@@ -109,7 +109,7 @@
 >hscolour</A
 > :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"
 >ColourPrefs</A
-> -&gt; Bool -&gt; String -&gt; String</TD
+> -&gt; Bool -&gt; Bool -&gt; String -&gt; String -&gt; String</TD
 ></TR
 ><TR
 ><TD CLASS="s8"
@@ -135,6 +135,16 @@
 >renderComment</A
 > :: String -&gt; String</TD
 ></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3ArenderNewLinesAnchors"
+>renderNewLinesAnchors</A
+> :: String -&gt; String</TD
+></TR
 ></TABLE
 ></TD
 ></TR
@@ -184,13 +194,27 @@
 ><TD CLASS="arg"
 >-&gt; Bool</TD
 ><TD CLASS="rdoc"
->Whether to include anchors
+>Whether to include anchors.
 </TD
 ></TR
 ><TR
 ><TD CLASS="arg"
+>-&gt; Bool</TD
+><TD CLASS="rdoc"
+>Whether output should be partial.
+</TD
+></TR
+><TR
+><TD CLASS="arg"
 >-&gt; String</TD
 ><TD CLASS="rdoc"
+>Title for webpage output.
+</TD
+></TR
+><TR
+><TD CLASS="arg"
+>-&gt; String</TD
+><TD CLASS="rdoc"
 >Haskell source code.
 </TD
 ></TR
@@ -262,6 +286,28 @@
 > :: String -&gt; String</TD
 ><TD CLASS="declbut"
 ><A HREF="Language/Haskell/HsColour/HTML.html#renderComment"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3ArenderNewLinesAnchors"
+></A
+><B
+>renderNewLinesAnchors</B
+> :: String -&gt; String</TD
+><TD CLASS="declbut"
+><A HREF="Language/Haskell/HsColour/HTML.html#renderNewLinesAnchors"
 >Source</A
 ></TD
 ></TR
diff --git a/docs/hscolour/Language-Haskell-HsColour-LaTeX.html b/docs/hscolour/Language-Haskell-HsColour-LaTeX.html
--- a/docs/hscolour/Language-Haskell-HsColour-LaTeX.html
+++ b/docs/hscolour/Language-Haskell-HsColour-LaTeX.html
@@ -92,19 +92,7 @@
 >hscolour</A
 > :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"
 >ColourPrefs</A
-> -&gt; String -&gt; String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AhscolourFragment"
->hscolourFragment</A
-> :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"
->ColourPrefs</A
-> -&gt; String -&gt; String</TD
+> -&gt; Bool -&gt; String -&gt; String</TD
 ></TR
 ></TABLE
 ></TD
@@ -153,59 +141,9 @@
 ></TR
 ><TR
 ><TD CLASS="arg"
->-&gt; String</TD
-><TD CLASS="rdoc"
->Haskell source code.
-</TD
-></TR
-><TR
-><TD CLASS="arg"
->-&gt; String</TD
-><TD CLASS="rdoc"
->An LaTeX document containing the coloured 
-   Haskell source code.
-</TD
-></TR
-><TR
-><TD CLASS="ndoc" COLSPAN="2"
->Formats Haskell source code as a complete LaTeX document.
-</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AhscolourFragment"
-></A
-><B
->hscolourFragment</B
-></TD
-><TD CLASS="declbut"
-><A HREF="Language/Haskell/HsColour/LaTeX.html#hscolourFragment"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
->:: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"
->ColourPrefs</A
-></TD
+>-&gt; Bool</TD
 ><TD CLASS="rdoc"
->Colour preferences.
+>Whether output should be partial (= no prologue).
 </TD
 ></TR
 ><TR
@@ -219,13 +157,13 @@
 ><TD CLASS="arg"
 >-&gt; String</TD
 ><TD CLASS="rdoc"
->An LaTeX fragment containing the coloured 
+>A LaTeX document/fragment containing the coloured 
    Haskell source code.
 </TD
 ></TR
 ><TR
 ><TD CLASS="ndoc" COLSPAN="2"
->Formats Haskell source code as an LaTeX fragment.
+>Formats Haskell source code as a complete LaTeX document.
 </TD
 ></TR
 ></TABLE
diff --git a/docs/hscolour/Language-Haskell-HsColour-MIRC.html b/docs/hscolour/Language-Haskell-HsColour-MIRC.html
new file mode 100644
--- /dev/null
+++ b/docs/hscolour/Language-Haskell-HsColour-MIRC.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Rendered using the Haskell Html Library v0.2-->
+<HTML
+><HEAD
+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
+><TITLE
+>Language.Haskell.HsColour.MIRC</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock.js" TYPE="text/javascript"
+></SCRIPT
+></HEAD
+><BODY
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topbar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
+></TD
+><TD CLASS="title"
+>hscolour</TD
+><TD CLASS="topbut"
+><A HREF="Language/Haskell/HsColour/MIRC.html"
+>Source code</A
+></TD
+><TD CLASS="topbut"
+><A HREF="index.html"
+>Contents</A
+></TD
+><TD CLASS="topbut"
+><A HREF="doc-index.html"
+>Index</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="modulebar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><FONT SIZE="6"
+>Language.Haskell.HsColour.MIRC</FONT
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Description</TD
+></TR
+><TR
+><TD CLASS="doc"
+>Formats Haskell source code using mIRC codes.
+   (see http://irssi.org/documentation/formats)
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Synopsis</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Ahscolour"
+>hscolour</A
+> :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"
+>ColourPrefs</A
+> -&gt; String -&gt; String</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Documentation</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Ahscolour"
+></A
+><B
+>hscolour</B
+></TD
+><TD CLASS="declbut"
+><A HREF="Language/Haskell/HsColour/MIRC.html#hscolour"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+>:: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"
+>ColourPrefs</A
+></TD
+><TD CLASS="rdoc"
+>Colour preferences.
+</TD
+></TR
+><TR
+><TD CLASS="arg"
+>-&gt; String</TD
+><TD CLASS="rdoc"
+>Haskell source code.
+</TD
+></TR
+><TR
+><TD CLASS="arg"
+>-&gt; String</TD
+><TD CLASS="rdoc"
+>Coloured Haskell source code.
+</TD
+></TR
+><TR
+><TD CLASS="ndoc" COLSPAN="2"
+>Formats Haskell source code using mIRC codes.
+</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="botbar"
+>Produced by <A HREF="http://www.haskell.org/haddock/"
+>Haddock</A
+> version 0.8</TD
+></TR
+></TABLE
+></BODY
+></HTML
+>
diff --git a/docs/hscolour/Language-Haskell-HsColour.html b/docs/hscolour/Language-Haskell-HsColour.html
--- a/docs/hscolour/Language-Haskell-HsColour.html
+++ b/docs/hscolour/Language-Haskell-HsColour.html
@@ -69,8 +69,8 @@
 ><TR
 ><TD CLASS="doc"
 ><P
->This is a library with colourises Haskell code. 
-   It currently has three output formats: 
+>This is a library which colourises Haskell code.
+   It currently has five output formats:
 </P
 ><UL
 ><LI
@@ -85,6 +85,9 @@
 ><LI
 > HTML with CSS.
 </LI
+><LI
+> mIRC chat client colour codes.
+</LI
 ></UL
 ></TD
 ></TR
@@ -141,6 +144,12 @@
 >CSS</A
 ></TD
 ></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AMIRC"
+>MIRC</A
+></TD
+></TR
 ></TABLE
 ></TD
 ></TR
@@ -184,10 +193,14 @@
 >char</A
 >, <A HREF="#v%3Anumber"
 >number</A
+>, <A HREF="#v%3Acpp"
+>cpp</A
 >, <A HREF="#v%3Aselection"
 >selection</A
 >, <A HREF="#v%3Avariantselection"
 >variantselection</A
+>, <A HREF="#v%3Adefinition"
+>definition</A
 > :: [<A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AHighlight"
 >Highlight</A
 >]</TD
@@ -207,7 +220,7 @@
 >Output</A
 > -&gt; <A HREF="Language-Haskell-HsColour.html#t%3AColourPrefs"
 >ColourPrefs</A
-> -&gt; Bool -&gt; String -&gt; String</TD
+> -&gt; Bool -&gt; Bool -&gt; Bool -&gt; String -&gt; String -&gt; String</TD
 ></TR
 ></TABLE
 ></TD
@@ -303,12 +316,48 @@
 >HTML with CSS.
 </TD
 ></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3AMIRC"
+></A
+><B
+>MIRC</B
+></TD
+><TD CLASS="rdoc"
+>mIRC chat clients
+</TD
+></TR
 ></TABLE
 ></TD
 ></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Output')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:Output" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Eq <A HREF="Language-Haskell-HsColour.html#t%3AOutput"
+>Output</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>Show <A HREF="Language-Haskell-HsColour.html#t%3AOutput"
+>Output</A
+></TD
+></TR
 ></TABLE
+></DIV
 ></TD
 ></TR
+></TABLE
+></TD
+></TR
 ><TR
 ><TD CLASS="s15"
 ></TD
@@ -407,6 +456,10 @@
 ></A
 ><B
 >number</B
+>, <A NAME="v%3Acpp"
+></A
+><B
+>cpp</B
 >, <A NAME="v%3Aselection"
 ></A
 ><B
@@ -415,6 +468,10 @@
 ></A
 ><B
 >variantselection</B
+>, <A NAME="v%3Adefinition"
+></A
+><B
+>definition</B
 > :: [<A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AHighlight"
 >Highlight</A
 >]</TD
@@ -501,7 +558,7 @@
 >ColourPrefs</A
 ></TD
 ><TD CLASS="rdoc"
->Colour preferences for formats that support it.
+>Colour preferences (for formats that support them).
 </TD
 ></TR
 ><TR
@@ -513,8 +570,29 @@
 ></TR
 ><TR
 ><TD CLASS="arg"
+>-&gt; Bool</TD
+><TD CLASS="rdoc"
+>Whether output document is partial or complete.
+</TD
+></TR
+><TR
+><TD CLASS="arg"
+>-&gt; Bool</TD
+><TD CLASS="rdoc"
+>Whether input document is literate haskell or not
+</TD
+></TR
+><TR
+><TD CLASS="arg"
 >-&gt; String</TD
 ><TD CLASS="rdoc"
+>Title for output.
+</TD
+></TR
+><TR
+><TD CLASS="arg"
+>-&gt; String</TD
+><TD CLASS="rdoc"
 >Haskell source code.
 </TD
 ></TR
@@ -527,7 +605,7 @@
 ></TR
 ><TR
 ><TD CLASS="ndoc" COLSPAN="2"
->Colourise Haskell source code with the give output format.
+>Colourise Haskell source code with the given output format.
 </TD
 ></TR
 ></TABLE
diff --git a/docs/hscolour/Language/Haskell/HsColour.html b/docs/hscolour/Language/Haskell/HsColour.html
--- a/docs/hscolour/Language/Haskell/HsColour.html
+++ b/docs/hscolour/Language/Haskell/HsColour.html
@@ -1,37 +1,97 @@
-<pre><font color=Blue>-- | This is a library with colourises Haskell code. </font>
-<font color=Blue>--   It currently has three output formats: </font>
-<font color=Blue>--</font>
-<font color=Blue>-- * ANSI terminal codes</font>
-<font color=Blue>--</font>
-<font color=Blue>-- * LaTeX macros</font>
-<font color=Blue>--</font>
-<font color=Blue>-- * HTML with font tags</font>
-<font color=Blue>--</font>
-<font color=Blue>-- * HTML with CSS.</font>
-<font color=Blue>--</font>
-<u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour <font color=Cyan>(</font>Output<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font> ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font>
-                                  hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise <font color=Cyan>(</font>ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>
-<u><font color=Green>import</font></u> qualified Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>TTY  <u><font color=Green>as</font></u> TTY
-<u><font color=Green>import</font></u> qualified Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <u><font color=Green>as</font></u> HTML
-<u><font color=Green>import</font></u> qualified Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>CSS  <u><font color=Green>as</font></u> CSS
-<u><font color=Green>import</font></u> qualified Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>LaTeX  <u><font color=Green>as</font></u> LaTeX
-
-<font color=Blue>-- | The supported output formats.</font>
-<a name="Output"></a><u><font color=Green>data</font></u> Output <font color=Red>=</font> TTY   <font color=Blue>-- ^ ANSI terminal codes</font>
-            <font color=Red>|</font> LaTeX <font color=Blue>-- ^ TeX macros</font>
-            <font color=Red>|</font> HTML  <font color=Blue>-- ^ HTML with font tags</font>
-            <font color=Red>|</font> CSS   <font color=Blue>-- ^ HTML with CSS.</font>
-
-<font color=Blue>-- | Colourise Haskell source code with the give output format.</font>
-hscolour <font color=Red>::</font> Output      <font color=Blue>-- ^ Output format.</font>
-         <font color=Red>-&gt;</font> ColourPrefs <font color=Blue>-- ^ Colour preferences for formats that support it.</font>
-         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors.</font>
-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>
-<a name="hscolour"></a>hscolour TTY   pref <u><font color=Green>_</font></u>      <font color=Red>=</font> TTY<font color=Cyan>.</font>hscolour pref
-hscolour LaTeX pref <u><font color=Green>_</font></u>      <font color=Red>=</font> LaTeX<font color=Cyan>.</font>hscolour pref
-hscolour HTML  pref anchor <font color=Red>=</font> HTML<font color=Cyan>.</font>hscolour pref anchor
-hscolour CSS   <u><font color=Green>_</font></u>    anchor <font color=Red>=</font> CSS<font color=Cyan>.</font>hscolour anchor
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>-- | This is a library which colourises Haskell code.</font>
+<a name="line-2"></a><font color=Blue>--   It currently has five output formats:</font>
+<a name="line-3"></a><font color=Blue>--</font>
+<a name="line-4"></a><font color=Blue>-- * ANSI terminal codes</font>
+<a name="line-5"></a><font color=Blue>--</font>
+<a name="line-6"></a><font color=Blue>-- * LaTeX macros</font>
+<a name="line-7"></a><font color=Blue>--</font>
+<a name="line-8"></a><font color=Blue>-- * HTML with font tags</font>
+<a name="line-9"></a><font color=Blue>--</font>
+<a name="line-10"></a><font color=Blue>-- * HTML with CSS.</font>
+<a name="line-11"></a><font color=Blue>--</font>
+<a name="line-12"></a><font color=Blue>-- * mIRC chat client colour codes.</font>
+<a name="line-13"></a><font color=Blue>--</font>
+<a name="line-14"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour <font color=Cyan>(</font>Output<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font> ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font>
+<a name="line-15"></a>                                  hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-16"></a>
+<a name="line-17"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise <font color=Cyan>(</font>ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-18"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>TTY   <u><font color=Green>as</font></u> TTY
+<a name="line-19"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML  <u><font color=Green>as</font></u> HTML
+<a name="line-20"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>CSS   <u><font color=Green>as</font></u> CSS
+<a name="line-21"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>LaTeX <u><font color=Green>as</font></u> LaTeX
+<a name="line-22"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>MIRC  <u><font color=Green>as</font></u> MIRC
+<a name="line-23"></a>
+<a name="line-24"></a><a name="Output"></a><font color=Blue>-- | The supported output formats.</font>
+<a name="line-25"></a><a name="Output"></a><u><font color=Green>data</font></u> Output <font color=Red>=</font> TTY   <font color=Blue>-- ^ ANSI terminal codes</font>
+<a name="line-26"></a>            <font color=Red>|</font> LaTeX <font color=Blue>-- ^ TeX macros</font>
+<a name="line-27"></a>            <font color=Red>|</font> HTML  <font color=Blue>-- ^ HTML with font tags</font>
+<a name="line-28"></a>            <font color=Red>|</font> CSS   <font color=Blue>-- ^ HTML with CSS.</font>
+<a name="line-29"></a>            <font color=Red>|</font> MIRC  <font color=Blue>-- ^ mIRC chat clients</font>
+<a name="line-30"></a>  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>
+<a name="line-31"></a>
+<a name="line-32"></a><a name="hscolour"></a><font color=Blue>-- | Colourise Haskell source code with the given output format.</font>
+<a name="line-33"></a>hscolour <font color=Red>::</font> Output      <font color=Blue>-- ^ Output format.</font>
+<a name="line-34"></a>         <font color=Red>-&gt;</font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them).</font>
+<a name="line-35"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors.</font>
+<a name="line-36"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether output document is partial or complete.</font>
+<a name="line-37"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether input document is literate haskell or not</font>
+<a name="line-38"></a>         <font color=Red>-&gt;</font> String	<font color=Blue>-- ^ Title for output.</font>
+<a name="line-39"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
+<a name="line-40"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>
+<a name="line-41"></a>hscolour output pref anchor partial literate title
+<a name="line-42"></a>    <font color=Red>|</font> literate  <font color=Red>=</font> concatMap chunk <font color=Cyan>.</font> joinL <font color=Cyan>.</font> map lhsClassify <font color=Cyan>.</font> inlines
+<a name="line-43"></a>    <font color=Red>|</font> otherwise <font color=Red>=</font> hscolour' output pref anchor partial title
+<a name="line-44"></a>  <u><font color=Green>where</font></u>
+<a name="line-45"></a>    chunk <font color=Cyan>(</font>Literate c<font color=Cyan>)</font> <font color=Red>=</font> c
+<a name="line-46"></a>    chunk <font color=Cyan>(</font>Code c<font color=Cyan>)</font>     <font color=Red>=</font> hscolour' output pref anchor True title c
+<a name="line-47"></a>
+<a name="line-48"></a><a name="hscolour'"></a>hscolour' <font color=Red>::</font> Output      <font color=Blue>-- ^ Output format.</font>
+<a name="line-49"></a>          <font color=Red>-&gt;</font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them).</font>
+<a name="line-50"></a>          <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors.</font>
+<a name="line-51"></a>          <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether output document is partial or complete.</font>
+<a name="line-52"></a>          <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Title for output.</font>
+<a name="line-53"></a>          <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
+<a name="line-54"></a>          <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>
+<a name="line-55"></a>hscolour' TTY   pref <u><font color=Green>_</font></u>      <u><font color=Green>_</font></u>       <u><font color=Green>_</font></u>   <font color=Red>=</font> TTY<font color=Cyan>.</font>hscolour pref
+<a name="line-56"></a>hscolour' MIRC  pref <u><font color=Green>_</font></u>      <u><font color=Green>_</font></u>       <u><font color=Green>_</font></u>   <font color=Red>=</font> MIRC<font color=Cyan>.</font>hscolour pref
+<a name="line-57"></a>hscolour' LaTeX pref <u><font color=Green>_</font></u>      partial <u><font color=Green>_</font></u>   <font color=Red>=</font> LaTeX<font color=Cyan>.</font>hscolour pref partial
+<a name="line-58"></a>hscolour' HTML  pref anchor partial top <font color=Red>=</font> HTML<font color=Cyan>.</font>hscolour pref anchor partial top
+<a name="line-59"></a>hscolour' CSS   <u><font color=Green>_</font></u>    anchor partial top <font color=Red>=</font> CSS<font color=Cyan>.</font>hscolour anchor partial top
+<a name="line-60"></a>
+<a name="line-61"></a><a name="Literate"></a><font color=Blue>-- | Separating literate files into code\/comment chunks.</font>
+<a name="line-62"></a><a name="Literate"></a><u><font color=Green>data</font></u> Literate <font color=Red>=</font> Code <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <font color=Red>|</font> Literate <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font>
+<a name="line-63"></a>
+<a name="line-64"></a><a name="inlines"></a><font color=Blue>-- Re-implementation of 'lines', for better efficiency (but decreased laziness).</font>
+<a name="line-65"></a><font color=Blue>-- Also, importantly, accepts non-standard DOS and Mac line ending characters.</font>
+<a name="line-66"></a><font color=Blue>-- And retains the trailing '\n' character in each resultant string.</font>
+<a name="line-67"></a>inlines <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>
+<a name="line-68"></a>inlines s <font color=Red>=</font> lines' s id
+<a name="line-69"></a>  <u><font color=Green>where</font></u>
+<a name="line-70"></a>  lines' []             acc <font color=Red>=</font> <font color=Red>[</font>acc []<font color=Red>]</font>
+<a name="line-71"></a>  lines' <font color=Cyan>(</font><font color=Magenta>'\^M'</font><b><font color=Red>:</font></b><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> acc <font color=Red>[</font><font color=Magenta>'\n'</font><font color=Red>]</font> <b><font color=Red>:</font></b> lines' s id	<font color=Blue>-- DOS</font>
+<a name="line-72"></a><font color=Blue>--lines' ('\^M':s)      acc = acc ['\n'] : lines' s id	-- MacOS</font>
+<a name="line-73"></a>  lines' <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font>       acc <font color=Red>=</font> acc <font color=Red>[</font><font color=Magenta>'\n'</font><font color=Red>]</font> <b><font color=Red>:</font></b> lines' s id	<font color=Blue>-- Unix</font>
+<a name="line-74"></a>  lines' <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font>          acc <font color=Red>=</font> lines' s <font color=Cyan>(</font>acc <font color=Cyan>.</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-75"></a>
+<a name="line-76"></a><a name="lhsClassify"></a><font color=Blue>-- Note, I just pass the &gt; symbol to the colouriser, which assumes that</font>
+<a name="line-77"></a><font color=Blue>-- it's token based and not parse-based!!!</font>
+<a name="line-78"></a>lhsClassify <font color=Red>::</font> String <font color=Red>-&gt;</font> Literate
+<a name="line-79"></a>lhsClassify <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>  <font color=Red>=</font> Code <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>
+<a name="line-80"></a>lhsClassify xs        <font color=Red>=</font> Literate xs
+<a name="line-81"></a>
+<a name="line-82"></a><a name="joinL"></a>joinL <font color=Red>::</font> <font color=Red>[</font>Literate<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Literate<font color=Red>]</font>
+<a name="line-83"></a>joinL []                          <font color=Red>=</font> []
+<a name="line-84"></a>joinL <font color=Cyan>(</font>Code c<b><font color=Red>:</font></b>Code c2<b><font color=Red>:</font></b>xs<font color=Cyan>)</font>         <font color=Red>=</font> joinL <font color=Cyan>(</font>Code <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>
+<a name="line-85"></a>joinL <font color=Cyan>(</font>Literate c<b><font color=Red>:</font></b>Literate c2<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Literate <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>
+<a name="line-86"></a>joinL <font color=Cyan>(</font>any<b><font color=Red>:</font></b>xs<font color=Cyan>)</font>                    <font color=Red>=</font> any<b><font color=Red>:</font></b> joinL xs
+<a name="line-87"></a>
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/ANSI.html b/docs/hscolour/Language/Haskell/HsColour/ANSI.html
--- a/docs/hscolour/Language/Haskell/HsColour/ANSI.html
+++ b/docs/hscolour/Language/Haskell/HsColour/ANSI.html
@@ -1,94 +1,106 @@
-<pre><font color=Blue>-- Partially taken from Hugs AnsiScreen.hs library:</font>
-<u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ANSI
-  <font color=Cyan>(</font> highlightOn
-  <font color=Cyan>,</font> highlightOff
-  <font color=Cyan>,</font> highlight
-  <font color=Cyan>,</font> cleareol<font color=Cyan>,</font> clearbol<font color=Cyan>,</font> clearline<font color=Cyan>,</font> clearDown<font color=Cyan>,</font> clearUp<font color=Cyan>,</font> cls
-  <font color=Cyan>,</font> goto
-  <font color=Cyan>,</font> cursorUp<font color=Cyan>,</font> cursorDown<font color=Cyan>,</font> cursorLeft<font color=Cyan>,</font> cursorRight
-  <font color=Cyan>,</font> savePosition<font color=Cyan>,</font> restorePosition
-  <font color=Cyan>,</font> Highlight<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-  <font color=Cyan>,</font> Colour<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-  <font color=Cyan>,</font> colourCycle
-  <font color=Cyan>,</font> enableScrollRegion<font color=Cyan>,</font> scrollUp<font color=Cyan>,</font> scrollDown
-  <font color=Cyan>,</font> lineWrap
-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight
-
-<u><font color=Green>import</font></u> List <font color=Cyan>(</font>intersperse<font color=Cyan>,</font>isPrefixOf<font color=Cyan>)</font>
-<u><font color=Green>import</font></u> Char <font color=Cyan>(</font>isDigit<font color=Cyan>)</font>
-
-
-<font color=Blue>-- Basic screen control codes:</font>
-
-<a name="Pos"></a><u><font color=Green>type</font></u> Pos           <font color=Red>=</font> <font color=Cyan>(</font>Int<font color=Cyan>,</font>Int<font color=Cyan>)</font>
-
-at        <font color=Red>::</font> Pos <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
-goto      <font color=Red>::</font> Int <font color=Red>-&gt;</font> Int <font color=Red>-&gt;</font> String
-home      <font color=Red>::</font> String
-cls       <font color=Red>::</font> String
-
-<a name="at"></a>at <font color=Cyan>(</font>x<font color=Cyan>,</font>y<font color=Cyan>)</font> s  <font color=Red>=</font> goto x y <font color=Cyan>++</font> s
-<a name="goto"></a>goto x y    <font color=Red>=</font> <font color=Magenta>'\ESC'</font><b><font color=Red>:</font></b><font color=Magenta>'['</font><b><font color=Red>:</font></b><font color=Cyan>(</font>show y <font color=Cyan>++</font><font color=Cyan>(</font><font color=Magenta>';'</font><b><font color=Red>:</font></b>show x <font color=Cyan>++</font> <font color=Magenta>"H"</font><font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="home"></a>home        <font color=Red>=</font> goto <font color=Magenta>1</font> <font color=Magenta>1</font>
-
-<a name="cursorUp"></a>cursorUp    <font color=Red>=</font> <font color=Magenta>"\ESC[A"</font>
-<a name="cursorDown"></a>cursorDown  <font color=Red>=</font> <font color=Magenta>"\ESC[B"</font>
-<a name="cursorRight"></a>cursorRight <font color=Red>=</font> <font color=Magenta>"\ESC[C"</font>
-<a name="cursorLeft"></a>cursorLeft  <font color=Red>=</font> <font color=Magenta>"\ESC[D"</font>
-
-<a name="cleareol"></a>cleareol    <font color=Red>=</font> <font color=Magenta>"\ESC[K"</font>
-<a name="clearbol"></a>clearbol    <font color=Red>=</font> <font color=Magenta>"\ESC[1K"</font>
-<a name="clearline"></a>clearline   <font color=Red>=</font> <font color=Magenta>"\ESC[2K"</font>
-<a name="clearDown"></a>clearDown   <font color=Red>=</font> <font color=Magenta>"\ESC[J"</font>
-<a name="clearUp"></a>clearUp     <font color=Red>=</font> <font color=Magenta>"\ESC[1J"</font>
-<font color=Blue>-- Choose whichever of the following lines is suitable for your system:</font>
-<a name="cls"></a>cls         <font color=Red>=</font> <font color=Magenta>"\ESC[2J"</font>     <font color=Blue>-- for PC with ANSI.SYS</font>
-<font color=Blue>--cls         = "\^L"         -- for Sun window</font>
-
-<a name="savePosition"></a>savePosition    <font color=Red>=</font> <font color=Magenta>"\ESC7"</font>
-<a name="restorePosition"></a>restorePosition <font color=Red>=</font> <font color=Magenta>"\ESC8"</font>
-
-
-<font color=Blue>-- data Colour    -- imported from ColourHighlight</font>
-<font color=Blue>-- data Highlight -- imported from ColourHighlight</font>
-
-<u><font color=Green>instance</font></u> Enum Highlight <u><font color=Green>where</font></u>
-  fromEnum Normal       <font color=Red>=</font> <font color=Magenta>0</font>
-  fromEnum Bold         <font color=Red>=</font> <font color=Magenta>1</font>
-  fromEnum Dim          <font color=Red>=</font> <font color=Magenta>2</font>
-  fromEnum Underscore   <font color=Red>=</font> <font color=Magenta>4</font>
-  fromEnum Blink        <font color=Red>=</font> <font color=Magenta>5</font>
-  fromEnum ReverseVideo <font color=Red>=</font> <font color=Magenta>7</font>
-  fromEnum Concealed    <font color=Red>=</font> <font color=Magenta>8</font>
-  fromEnum <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>30</font> <font color=Cyan>+</font> fromEnum c
-  fromEnum <font color=Cyan>(</font>Background c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>40</font> <font color=Cyan>+</font> fromEnum c
-
-highlight <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
-<a name="highlight"></a>highlight attrs s <font color=Red>=</font> highlightOn attrs <font color=Cyan>++</font> s <font color=Cyan>++</font> highlightOff
-
-<a name="highlightOn"></a>highlightOn <font color=Red>[</font><font color=Red>]</font>     <font color=Red>=</font> highlightOn <font color=Red>[</font>Normal<font color=Red>]</font>
-highlightOn attrs  <font color=Red>=</font> <font color=Magenta>"\ESC["</font>
-                     <font color=Cyan>++</font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>";"</font> <font color=Cyan>(</font>map <font color=Cyan>(</font>show<font color=Cyan>.</font>fromEnum<font color=Cyan>)</font> attrs<font color=Cyan>)</font><font color=Cyan>)</font>
-                     <font color=Cyan>++</font><font color=Magenta>"m"</font>
-<a name="highlightOff"></a>highlightOff <font color=Red>=</font> <font color=Magenta>"\ESC[0m"</font>
-
-
-<font color=Blue>-- An infinite supply of colours.</font>
-colourCycle <font color=Red>::</font> <font color=Red>[</font>Colour<font color=Red>]</font>
-<a name="colourCycle"></a>colourCycle <font color=Red>=</font> cycle <font color=Red>[</font>Red<font color=Cyan>,</font>Blue<font color=Cyan>,</font>Magenta<font color=Cyan>,</font>Green<font color=Cyan>,</font>Cyan<font color=Red>]</font>
-
-
-<font color=Blue>-- Scrolling</font>
-enableScrollRegion <font color=Red>::</font> Int <font color=Red>-&gt;</font> Int <font color=Red>-&gt;</font> String
-<a name="enableScrollRegion"></a>enableScrollRegion start end <font color=Red>=</font> <font color=Magenta>"\ESC["</font><font color=Cyan>++</font>show start<font color=Cyan>++</font><font color=Magenta>';'</font><b><font color=Red>:</font></b>show end<font color=Cyan>++</font><font color=Magenta>"r"</font>
-
-<a name="scrollDown"></a>scrollDown  <font color=Red>=</font> <font color=Magenta>"\ESCD"</font>
-<a name="scrollUp"></a>scrollUp    <font color=Red>=</font> <font color=Magenta>"\ESCM"</font>
-
-<font color=Blue>-- Line-wrapping mode</font>
-<a name="lineWrap"></a>lineWrap True  <font color=Red>=</font> <font color=Magenta>"\ESC[7h"</font>
-lineWrap False <font color=Red>=</font> <font color=Magenta>"\ESC[7l"</font>
-
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/ANSI.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>-- | Partially taken from Hugs AnsiScreen.hs library:</font>
+<a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ANSI
+<a name="line-3"></a>  <font color=Cyan>(</font> highlightOn
+<a name="line-4"></a>  <font color=Cyan>,</font> highlightOff
+<a name="line-5"></a>  <font color=Cyan>,</font> highlight
+<a name="line-6"></a>  <font color=Cyan>,</font> cleareol<font color=Cyan>,</font> clearbol<font color=Cyan>,</font> clearline<font color=Cyan>,</font> clearDown<font color=Cyan>,</font> clearUp<font color=Cyan>,</font> cls
+<a name="line-7"></a>  <font color=Cyan>,</font> goto
+<a name="line-8"></a>  <font color=Cyan>,</font> cursorUp<font color=Cyan>,</font> cursorDown<font color=Cyan>,</font> cursorLeft<font color=Cyan>,</font> cursorRight
+<a name="line-9"></a>  <font color=Cyan>,</font> savePosition<font color=Cyan>,</font> restorePosition
+<a name="line-10"></a>  <font color=Cyan>,</font> Highlight<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-11"></a>  <font color=Cyan>,</font> Colour<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-12"></a>  <font color=Cyan>,</font> colourCycle
+<a name="line-13"></a>  <font color=Cyan>,</font> enableScrollRegion<font color=Cyan>,</font> scrollUp<font color=Cyan>,</font> scrollDown
+<a name="line-14"></a>  <font color=Cyan>,</font> lineWrap
+<a name="line-15"></a>  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-16"></a>
+<a name="line-17"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight
+<a name="line-18"></a>
+<a name="line-19"></a><u><font color=Green>import</font></u> List <font color=Cyan>(</font>intersperse<font color=Cyan>,</font>isPrefixOf<font color=Cyan>)</font>
+<a name="line-20"></a><u><font color=Green>import</font></u> Char <font color=Cyan>(</font>isDigit<font color=Cyan>)</font>
+<a name="line-21"></a>
+<a name="line-22"></a>
+<a name="line-23"></a><font color=Blue>-- Basic screen control codes:</font>
+<a name="line-24"></a>
+<a name="line-25"></a><a name="Pos"></a><u><font color=Green>type</font></u> Pos           <font color=Red>=</font> <font color=Cyan>(</font>Int<font color=Cyan>,</font>Int<font color=Cyan>)</font>
+<a name="line-26"></a>
+<a name="line-27"></a><a name="at"></a>at        <font color=Red>::</font> Pos <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
+<a name="line-28"></a><a name="goto"></a><font color=Blue>-- | Move the screen cursor to the given position.</font>
+<a name="line-29"></a>goto      <font color=Red>::</font> Int <font color=Red>-&gt;</font> Int <font color=Red>-&gt;</font> String
+<a name="line-30"></a><a name="home"></a>home      <font color=Red>::</font> String
+<a name="line-31"></a><a name="cls"></a><font color=Blue>-- | Clear the screen.</font>
+<a name="line-32"></a>cls       <font color=Red>::</font> String
+<a name="line-33"></a>
+<a name="line-34"></a>at <font color=Cyan>(</font>x<font color=Cyan>,</font>y<font color=Cyan>)</font> s  <font color=Red>=</font> goto x y <font color=Cyan>++</font> s
+<a name="line-35"></a>goto x y    <font color=Red>=</font> <font color=Magenta>'\ESC'</font><b><font color=Red>:</font></b><font color=Magenta>'['</font><b><font color=Red>:</font></b><font color=Cyan>(</font>show y <font color=Cyan>++</font><font color=Cyan>(</font><font color=Magenta>';'</font><b><font color=Red>:</font></b>show x <font color=Cyan>++</font> <font color=Magenta>"H"</font><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-36"></a>home        <font color=Red>=</font> goto <font color=Magenta>1</font> <font color=Magenta>1</font>
+<a name="line-37"></a>
+<a name="line-38"></a><a name="cursorUp"></a>cursorUp    <font color=Red>=</font> <font color=Magenta>"\ESC[A"</font>
+<a name="line-39"></a><a name="cursorDown"></a>cursorDown  <font color=Red>=</font> <font color=Magenta>"\ESC[B"</font>
+<a name="line-40"></a><a name="cursorRight"></a>cursorRight <font color=Red>=</font> <font color=Magenta>"\ESC[C"</font>
+<a name="line-41"></a><a name="cursorLeft"></a>cursorLeft  <font color=Red>=</font> <font color=Magenta>"\ESC[D"</font>
+<a name="line-42"></a>
+<a name="line-43"></a><a name="cleareol"></a>cleareol    <font color=Red>=</font> <font color=Magenta>"\ESC[K"</font>
+<a name="line-44"></a><a name="clearbol"></a>clearbol    <font color=Red>=</font> <font color=Magenta>"\ESC[1K"</font>
+<a name="line-45"></a><a name="clearline"></a>clearline   <font color=Red>=</font> <font color=Magenta>"\ESC[2K"</font>
+<a name="line-46"></a><a name="clearDown"></a>clearDown   <font color=Red>=</font> <font color=Magenta>"\ESC[J"</font>
+<a name="line-47"></a><a name="clearUp"></a>clearUp     <font color=Red>=</font> <font color=Magenta>"\ESC[1J"</font>
+<a name="line-48"></a><font color=Blue>-- Choose whichever of the following lines is suitable for your system:</font>
+<a name="line-49"></a>cls         <font color=Red>=</font> <font color=Magenta>"\ESC[2J"</font>     <font color=Blue>-- for PC with ANSI.SYS</font>
+<a name="line-50"></a><font color=Blue>--cls         = "\^L"         -- for Sun window</font>
+<a name="line-51"></a>
+<a name="line-52"></a><a name="savePosition"></a>savePosition    <font color=Red>=</font> <font color=Magenta>"\ESC7"</font>
+<a name="line-53"></a><a name="restorePosition"></a>restorePosition <font color=Red>=</font> <font color=Magenta>"\ESC8"</font>
+<a name="line-54"></a>
+<a name="line-55"></a>
+<a name="line-56"></a><font color=Blue>-- data Colour    -- imported from ColourHighlight</font>
+<a name="line-57"></a><font color=Blue>-- data Highlight -- imported from ColourHighlight</font>
+<a name="line-58"></a>
+<a name="line-59"></a><u><font color=Green>instance</font></u> Enum Highlight <u><font color=Green>where</font></u>
+<a name="line-60"></a>  fromEnum Normal       <font color=Red>=</font> <font color=Magenta>0</font>
+<a name="line-61"></a>  fromEnum Bold         <font color=Red>=</font> <font color=Magenta>1</font>
+<a name="line-62"></a>  fromEnum Dim          <font color=Red>=</font> <font color=Magenta>2</font>
+<a name="line-63"></a>  fromEnum Underscore   <font color=Red>=</font> <font color=Magenta>4</font>
+<a name="line-64"></a>  fromEnum Blink        <font color=Red>=</font> <font color=Magenta>5</font>
+<a name="line-65"></a>  fromEnum ReverseVideo <font color=Red>=</font> <font color=Magenta>7</font>
+<a name="line-66"></a>  fromEnum Concealed    <font color=Red>=</font> <font color=Magenta>8</font>
+<a name="line-67"></a>  fromEnum <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>30</font> <font color=Cyan>+</font> fromEnum c
+<a name="line-68"></a>  fromEnum <font color=Cyan>(</font>Background c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>40</font> <font color=Cyan>+</font> fromEnum c
+<a name="line-69"></a>
+<a name="line-70"></a><a name="highlight"></a><font color=Blue>-- | Make the given string appear with all of the listed highlights</font>
+<a name="line-71"></a>highlight <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
+<a name="line-72"></a>highlight attrs s <font color=Red>=</font> highlightOn attrs <font color=Cyan>++</font> s <font color=Cyan>++</font> highlightOff
+<a name="line-73"></a>
+<a name="line-74"></a><a name="highlightOn"></a>highlightOn []     <font color=Red>=</font> highlightOn <font color=Red>[</font>Normal<font color=Red>]</font>
+<a name="line-75"></a>highlightOn attrs  <font color=Red>=</font> <font color=Magenta>"\ESC["</font>
+<a name="line-76"></a>                     <font color=Cyan>++</font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>";"</font> <font color=Cyan>(</font>map <font color=Cyan>(</font>show<font color=Cyan>.</font>fromEnum<font color=Cyan>)</font> attrs<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-77"></a>                     <font color=Cyan>++</font><font color=Magenta>"m"</font>
+<a name="line-78"></a><a name="highlightOff"></a>highlightOff <font color=Red>=</font> <font color=Magenta>"\ESC[0m"</font>
+<a name="line-79"></a>
+<a name="line-80"></a>
+<a name="line-81"></a><a name="colourCycle"></a><font color=Blue>-- | An infinite supply of colours.</font>
+<a name="line-82"></a>colourCycle <font color=Red>::</font> <font color=Red>[</font>Colour<font color=Red>]</font>
+<a name="line-83"></a>colourCycle <font color=Red>=</font> cycle <font color=Red>[</font>Red<font color=Cyan>,</font>Blue<font color=Cyan>,</font>Magenta<font color=Cyan>,</font>Green<font color=Cyan>,</font>Cyan<font color=Red>]</font>
+<a name="line-84"></a>
+<a name="line-85"></a>
+<a name="line-86"></a><a name="enableScrollRegion"></a><font color=Blue>-- | Scrolling</font>
+<a name="line-87"></a>enableScrollRegion <font color=Red>::</font> Int <font color=Red>-&gt;</font> Int <font color=Red>-&gt;</font> String
+<a name="line-88"></a>enableScrollRegion start end <font color=Red>=</font> <font color=Magenta>"\ESC["</font><font color=Cyan>++</font>show start<font color=Cyan>++</font><font color=Magenta>';'</font><b><font color=Red>:</font></b>show end<font color=Cyan>++</font><font color=Magenta>"r"</font>
+<a name="line-89"></a>
+<a name="line-90"></a><a name="scrollDown"></a>scrollDown  <font color=Red>=</font> <font color=Magenta>"\ESCD"</font>
+<a name="line-91"></a><a name="scrollUp"></a>scrollUp    <font color=Red>=</font> <font color=Magenta>"\ESCM"</font>
+<a name="line-92"></a>
+<a name="line-93"></a><a name="lineWrap"></a><font color=Blue>-- Line-wrapping mode</font>
+<a name="line-94"></a>lineWrap True  <font color=Red>=</font> <font color=Magenta>"\ESC[7h"</font>
+<a name="line-95"></a>lineWrap False <font color=Red>=</font> <font color=Magenta>"\ESC[7l"</font>
+<a name="line-96"></a>
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/Anchors.html b/docs/hscolour/Language/Haskell/HsColour/Anchors.html
--- a/docs/hscolour/Language/Haskell/HsColour/Anchors.html
+++ b/docs/hscolour/Language/Haskell/HsColour/Anchors.html
@@ -1,131 +1,143 @@
-<pre><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors
-  <font color=Cyan>(</font> insertAnchors
-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify
-<u><font color=Green>import</font></u> List
-
-<font color=Blue>-- This is an attempt to find the first defining occurrence of an</font>
-<font color=Blue>-- identifier (function, datatype, class) in a Haskell source file.</font>
-<font color=Blue>-- Rather than parse the module properly, we try to get by with just</font>
-<font color=Blue>-- a finite state automaton.  Keeping a record of identifiers we</font>
-<font color=Blue>-- have already seen, we look at the beginning of every line to see</font>
-<font color=Blue>-- if it starts with the right tokens to introduce a defn.  If so,</font>
-<font color=Blue>-- we look a little bit further until we can be certain.  Then plonk</font>
-<font color=Blue>-- (or not) an anchor at the beginning of the line.</font>
-
-<a name="Anchor"></a><u><font color=Green>type</font></u> Anchor <font color=Red>=</font> String
-
-<font color=Blue>-- | 'insertAnchors' places an anchor marker in the token stream before the</font>
-<font color=Blue>--   first defining occurrence of any identifier.  Here, /before/ means</font>
-<font color=Blue>--   immediately preceding its type signature, or preceding a (haddock)</font>
-<font color=Blue>--   comment that comes immediately before the type signature, or failing</font>
-<font color=Blue>--   either of those, before the first equation.</font>
-insertAnchors <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Either Anchor <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font>
-<a name="insertAnchors"></a>insertAnchors <font color=Red>=</font> anchor emptyST
-
-<font color=Blue>-- looks at first token in the left-most position of each line</font>
-<font color=Blue>-- precondition: have just seen a newline token.</font>
-<a name="anchor"></a>anchor st s <font color=Red>=</font> <u><font color=Green>case</font></u> identifier st s <u><font color=Green>of</font></u>
-                Nothing <font color=Red>-&gt;</font> emit st s
-                Just v  <font color=Red>-&gt;</font> Left v<b><font color=Red>:</font></b> emit <font color=Cyan>(</font>insertST v st<font color=Cyan>)</font> s
-
-<font color=Blue>-- emit passes stuff through until the next newline has been encountered,</font>
-<font color=Blue>-- then jumps back into the anchor function</font>
-<font color=Blue>-- pre-condition: newlines are explicitly single tokens</font>
-<a name="emit"></a>emit st <font color=Cyan>(</font>t<font color=Red>@</font><font color=Cyan>(</font>Space<font color=Cyan>,</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Right t<b><font color=Red>:</font></b> anchor st stream
-emit st <font color=Cyan>(</font>t<b><font color=Red>:</font></b>stream<font color=Cyan>)</font>              <font color=Red>=</font> Right t<b><font color=Red>:</font></b> emit st stream
-emit <u><font color=Green>_</font></u>  <font color=Red>[</font><font color=Red>]</font>                      <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>
-
-<font color=Blue>-- Given that we are at the beginning of a line, determine whether there</font>
-<font color=Blue>-- is an identifier defined here, and if so, return it.</font>
-<font color=Blue>-- precondition: have just seen a newline token.</font>
-<a name="identifier"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Varid<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font>
-    <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u>
-        <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>|</font> not <font color=Cyan>(</font>v<font color=Cyan>`inST`</font>st<font color=Cyan>)</font> <font color=Red>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>
-        notVarop  <font color=Blue>--  | typesig stream  -&gt; Nothing    -- not a defn</font>
-                      <font color=Red>|</font> v <font color=Cyan>`inST`</font> st     <font color=Red>-&gt;</font> Nothing    <font color=Blue>-- already defined</font>
-                      <font color=Red>|</font> otherwise       <font color=Red>-&gt;</font> Just v
-identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font>
-    <u><font color=Green>case</font></u> stream <u><font color=Green>of</font></u>
-      <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>
-                  <font color=Blue>--  | typesig stream  -&gt; Nothing</font>
-	              <font color=Red>|</font> v <font color=Cyan>`inST`</font> st     <font color=Red>-&gt;</font> Nothing
-	              <font color=Red>|</font> otherwise	<font color=Red>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>
-      notVarop <font color=Red>-&gt;</font> <u><font color=Green>case</font></u> skip <font color=Cyan>(</font>munchParens stream<font color=Cyan>)</font> <u><font color=Green>of</font></u>
-          <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>|</font> not <font color=Cyan>(</font>v<font color=Cyan>`inST`</font>st<font color=Cyan>)</font> <font color=Red>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>
-          <u><font color=Green>_</font></u>             <font color=Red>-&gt;</font> Nothing
-identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Nothing <font color=Blue>-- not yet implemented</font>
-identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"data"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> getConid stream
-identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"type"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> getConid stream
-identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"class"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>   <font color=Red>=</font> getConid stream
-identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Space<font color=Cyan>,</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> identifier st stream
-identifier st stream <font color=Red>=</font> Nothing
-
-<font color=Blue>-- Is this really a type signature?  (no longer used)</font>
-typesig <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Bool
-<a name="typesig"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"::"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>   <font color=Red>=</font> True
-typesig <font color=Cyan>(</font><font color=Cyan>(</font>Varid<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> typesig stream
-typesig <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Varop<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> typesig stream
-typesig <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>","</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> typesig stream
-typesig <font color=Cyan>(</font><font color=Cyan>(</font>Space<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> typesig stream
-typesig <font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>  <font color=Red>=</font> typesig stream
-typesig <u><font color=Green>_</font></u>                     <font color=Red>=</font> False
-
-<font color=Blue>-- throw away everything from opening paren to matching close</font>
-<a name="munchParens"></a>munchParens <font color=Red>=</font>  munch <font color=Cyan>(</font><font color=Magenta>0</font><font color=Red>::</font>Int<font color=Cyan>)</font>	<font color=Blue>-- already seen open paren</font>
-  <u><font color=Green>where</font></u> munch <font color=Magenta>0</font> <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> rest
-        munch n <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> munch <font color=Cyan>(</font>n<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> rest
-        munch n <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> munch <font color=Cyan>(</font>n<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> rest
-        munch n <font color=Cyan>(</font><u><font color=Green>_</font></u><b><font color=Red>:</font></b>rest<font color=Cyan>)</font>            <font color=Red>=</font> munch n rest
-        munch <u><font color=Green>_</font></u> <font color=Red>[</font><font color=Red>]</font>                  <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>	<font color=Blue>-- source is ill-formed</font>
-
-<font color=Blue>-- ensure anchor name is correct for a Varop</font>
-<a name="fix"></a>fix <font color=Cyan>(</font><font color=Magenta>'`'</font><b><font color=Red>:</font></b>v<font color=Cyan>)</font> <font color=Red>=</font> init v
-fix v       <font color=Red>=</font> v
-
-<font color=Blue>-- look past whitespace and comments to next "real" token</font>
-<a name="skip"></a>skip <font color=Cyan>(</font><font color=Cyan>(</font>Space<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>   <font color=Red>=</font> skip stream
-skip <font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> skip stream
-skip stream               <font color=Red>=</font> stream
-
-<font color=Blue>-- skip possible context up to and including "=&gt;", returning next Conid token</font>
-<font color=Blue>-- (this function is highly partial - relies on source being parse-correct)</font>
-<a name="getConid"></a>getConid stream <font color=Red>=</font>
-    <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u>
-        <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c<font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-&gt;</font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>
-                              <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>     <font color=Red>-&gt;</font> Just c
-                              <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-&gt;</font>
-                                  <u><font color=Green>case</font></u> skip more <u><font color=Green>of</font></u>
-                                      <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c'<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> Just c'
-                                      v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" =&gt;"</font><font color=Cyan>)</font>
-                              v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" no = or =&gt;"</font><font color=Cyan>)</font>
-        <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-&gt;</font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>
-                                   <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-&gt;</font>
-                                       <u><font color=Green>case</font></u> skip more <u><font color=Green>of</font></u>
-                                           <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c'<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> Just c'
-                                           v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) =&gt;"</font><font color=Cyan>)</font>
-                                   v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) no =&gt;"</font><font color=Cyan>)</font>
-        v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"no Conid or (...)"</font><font color=Cyan>)</font>
-    <u><font color=Green>where</font></u> debug <font color=Cyan>(</font>s<b><font color=Red>:</font></b>t<font color=Cyan>)</font> c <font color=Red>=</font> Nothing
-       <font color=Blue>-- debug (s:t) c = error ("HsColour: getConid failed: "++show s</font>
-       <font color=Blue>--                       ++"\n  in the context of: "++c)</font>
-
-<font color=Blue>-- jump past possible class context</font>
-<a name="context"></a>context stream<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> stream
-context stream<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> stream
-context <font color=Cyan>(</font><u><font color=Green>_</font></u><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> context stream
-
-<font color=Blue>-- simple implementation of a string lookup table.</font>
-<font color=Blue>-- replace this with something more sophisticated if needed.</font>
-<a name="ST"></a><u><font color=Green>type</font></u> ST <font color=Red>=</font> <font color=Red>[</font>String<font color=Red>]</font>
-
-emptyST <font color=Red>::</font> ST
-<a name="emptyST"></a>emptyST <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>
-
-insertST <font color=Red>::</font> String <font color=Red>-&gt;</font> ST <font color=Red>-&gt;</font> ST
-<a name="insertST"></a>insertST k st <font color=Red>=</font> insert k st
-
-inST <font color=Red>::</font> String <font color=Red>-&gt;</font> ST <font color=Red>-&gt;</font> Bool
-<a name="inST"></a>inST k st <font color=Red>=</font> k <font color=Cyan>`elem`</font> st
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/Anchors.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors
+<a name="line-2"></a>  <font color=Cyan>(</font> insertAnchors
+<a name="line-3"></a>  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-4"></a>
+<a name="line-5"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify
+<a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>General
+<a name="line-7"></a><u><font color=Green>import</font></u> List
+<a name="line-8"></a>
+<a name="line-9"></a><font color=Blue>-- This is an attempt to find the first defining occurrence of an</font>
+<a name="line-10"></a><font color=Blue>-- identifier (function, datatype, class) in a Haskell source file.</font>
+<a name="line-11"></a><font color=Blue>-- Rather than parse the module properly, we try to get by with just</font>
+<a name="line-12"></a><font color=Blue>-- a finite state automaton.  Keeping a record of identifiers we</font>
+<a name="line-13"></a><font color=Blue>-- have already seen, we look at the beginning of every line to see</font>
+<a name="line-14"></a><font color=Blue>-- if it starts with the right tokens to introduce a defn.  If so,</font>
+<a name="line-15"></a><font color=Blue>-- we look a little bit further until we can be certain.  Then plonk</font>
+<a name="line-16"></a><font color=Blue>-- (or not) an anchor at the beginning of the line.</font>
+<a name="line-17"></a>
+<a name="line-18"></a><a name="Anchor"></a><u><font color=Green>type</font></u> Anchor <font color=Red>=</font> String
+<a name="line-19"></a>
+<a name="line-20"></a><a name="insertAnchors"></a><font color=Blue>-- | 'insertAnchors' places an anchor marker in the token stream before the</font>
+<a name="line-21"></a><font color=Blue>--   first defining occurrence of any identifier.  Here, /before/ means</font>
+<a name="line-22"></a><font color=Blue>--   immediately preceding its type signature, or preceding a (haddock)</font>
+<a name="line-23"></a><font color=Blue>--   comment that comes immediately before the type signature, or failing</font>
+<a name="line-24"></a><font color=Blue>--   either of those, before the first equation.</font>
+<a name="line-25"></a>insertAnchors <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Either Anchor <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font>
+<a name="line-26"></a>insertAnchors <font color=Red>=</font> anchor emptyST
+<a name="line-27"></a>
+<a name="line-28"></a><a name="anchor"></a><font color=Blue>-- looks at first token in the left-most position of each line</font>
+<a name="line-29"></a><font color=Blue>-- precondition: have just seen a newline token.</font>
+<a name="line-30"></a>anchor st s <font color=Red>=</font> <u><font color=Green>case</font></u> identifier st s <u><font color=Green>of</font></u>
+<a name="line-31"></a>                Nothing <font color=Red>-&gt;</font> emit st s
+<a name="line-32"></a>                Just v  <font color=Red>-&gt;</font> Left v<b><font color=Red>:</font></b> emit <font color=Cyan>(</font>insertST v st<font color=Cyan>)</font> s
+<a name="line-33"></a>
+<a name="line-34"></a><a name="emit"></a><font color=Blue>-- emit passes stuff through until the next newline has been encountered,</font>
+<a name="line-35"></a><font color=Blue>-- then jumps back into the anchor function</font>
+<a name="line-36"></a><font color=Blue>-- pre-condition: newlines are explicitly single tokens</font>
+<a name="line-37"></a>emit st <font color=Cyan>(</font>t<font color=Red>@</font><font color=Cyan>(</font>Space<font color=Cyan>,</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Right t<b><font color=Red>:</font></b> anchor st stream
+<a name="line-38"></a>emit st <font color=Cyan>(</font>t<b><font color=Red>:</font></b>stream<font color=Cyan>)</font>              <font color=Red>=</font> Right t<b><font color=Red>:</font></b> emit st stream
+<a name="line-39"></a>emit <u><font color=Green>_</font></u>  []                      <font color=Red>=</font> []
+<a name="line-40"></a>
+<a name="line-41"></a><a name="identifier"></a><font color=Blue>-- Given that we are at the beginning of a line, determine whether there</font>
+<a name="line-42"></a><font color=Blue>-- is an identifier defined here, and if so, return it.</font>
+<a name="line-43"></a><font color=Blue>-- precondition: have just seen a newline token.</font>
+<a name="line-44"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>kind<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>|</font> kind<font color=Cyan>`elem`</font><font color=Red>[</font>Varid<font color=Cyan>,</font>Definition<font color=Red>]</font> <font color=Red>=</font>
+<a name="line-45"></a>    <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u>
+<a name="line-46"></a>        <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>|</font> not <font color=Cyan>(</font>v<font color=Cyan>`inST`</font>st<font color=Cyan>)</font> <font color=Red>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>
+<a name="line-47"></a>        notVarop  <font color=Blue>--  | typesig stream  -&gt; Nothing    -- not a defn</font>
+<a name="line-48"></a>                      <font color=Red>|</font> v <font color=Cyan>`inST`</font> st     <font color=Red>-&gt;</font> Nothing    <font color=Blue>-- already defined</font>
+<a name="line-49"></a>                      <font color=Red>|</font> otherwise       <font color=Red>-&gt;</font> Just v
+<a name="line-50"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-51"></a>    <u><font color=Green>case</font></u> stream <u><font color=Green>of</font></u>
+<a name="line-52"></a>      <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>
+<a name="line-53"></a>                  <font color=Blue>--  | typesig stream  -&gt; Nothing</font>
+<a name="line-54"></a>	              <font color=Red>|</font> v <font color=Cyan>`inST`</font> st     <font color=Red>-&gt;</font> Nothing
+<a name="line-55"></a>	              <font color=Red>|</font> otherwise	<font color=Red>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>
+<a name="line-56"></a>      notVarop <font color=Red>-&gt;</font> <u><font color=Green>case</font></u> skip <font color=Cyan>(</font>munchParens stream<font color=Cyan>)</font> <u><font color=Green>of</font></u>
+<a name="line-57"></a>          <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>|</font> not <font color=Cyan>(</font>v<font color=Cyan>`inST`</font>st<font color=Cyan>)</font> <font color=Red>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>
+<a name="line-58"></a>          <u><font color=Green>_</font></u>             <font color=Red>-&gt;</font> Nothing
+<a name="line-59"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Nothing <font color=Blue>-- not yet implemented</font>
+<a name="line-60"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"data"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> getConid stream
+<a name="line-61"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"newtype"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> getConid stream
+<a name="line-62"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"type"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> getConid stream
+<a name="line-63"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"class"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>   <font color=Red>=</font> getConid stream
+<a name="line-64"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Space<font color=Cyan>,</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> identifier st stream
+<a name="line-65"></a>identifier st stream <font color=Red>=</font> Nothing
+<a name="line-66"></a>
+<a name="line-67"></a><a name="typesig"></a><font color=Blue>-- Is this really a type signature?  (no longer used)</font>
+<a name="line-68"></a>typesig <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Bool
+<a name="line-69"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"::"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>   <font color=Red>=</font> True
+<a name="line-70"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Varid<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> typesig stream
+<a name="line-71"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Varop<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> typesig stream
+<a name="line-72"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>","</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> typesig stream
+<a name="line-73"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Space<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>    <font color=Red>=</font> typesig stream
+<a name="line-74"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>  <font color=Red>=</font> typesig stream
+<a name="line-75"></a>typesig <u><font color=Green>_</font></u>                     <font color=Red>=</font> False
+<a name="line-76"></a>
+<a name="line-77"></a><a name="munchParens"></a><font color=Blue>-- throw away everything from opening paren to matching close</font>
+<a name="line-78"></a>munchParens <font color=Red>=</font>  munch <font color=Cyan>(</font><font color=Magenta>0</font><font color=Red>::</font>Int<font color=Cyan>)</font>	<font color=Blue>-- already seen open paren</font>
+<a name="line-79"></a>  <u><font color=Green>where</font></u> munch <font color=Magenta>0</font> <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> rest
+<a name="line-80"></a>        munch n <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> munch <font color=Cyan>(</font>n<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> rest
+<a name="line-81"></a>        munch n <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> munch <font color=Cyan>(</font>n<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> rest
+<a name="line-82"></a>        munch n <font color=Cyan>(</font><u><font color=Green>_</font></u><b><font color=Red>:</font></b>rest<font color=Cyan>)</font>            <font color=Red>=</font> munch n rest
+<a name="line-83"></a>        munch <u><font color=Green>_</font></u> []                  <font color=Red>=</font> []	<font color=Blue>-- source is ill-formed</font>
+<a name="line-84"></a>
+<a name="line-85"></a><a name="fix"></a><font color=Blue>-- ensure anchor name is correct for a Varop</font>
+<a name="line-86"></a>fix <font color=Cyan>(</font><font color=Magenta>'`'</font><b><font color=Red>:</font></b>v<font color=Cyan>)</font> <font color=Red>=</font> dropLast <font color=Magenta>'`'</font> v
+<a name="line-87"></a>fix v       <font color=Red>=</font> v
+<a name="line-88"></a>
+<a name="line-89"></a><a name="skip"></a><font color=Blue>-- look past whitespace and comments to next "real" token</font>
+<a name="line-90"></a>skip <font color=Cyan>(</font><font color=Cyan>(</font>Space<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>   <font color=Red>=</font> skip stream
+<a name="line-91"></a>skip <font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> skip stream
+<a name="line-92"></a>skip stream               <font color=Red>=</font> stream
+<a name="line-93"></a>
+<a name="line-94"></a><a name="getConid"></a><font color=Blue>-- skip possible context up to and including "=&gt;", returning next Conid token</font>
+<a name="line-95"></a><font color=Blue>-- (this function is highly partial - relies on source being parse-correct)</font>
+<a name="line-96"></a>getConid stream <font color=Red>=</font>
+<a name="line-97"></a>    <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u>
+<a name="line-98"></a>        <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c<font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-&gt;</font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>
+<a name="line-99"></a>                              <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>     <font color=Red>-&gt;</font> Just c
+<a name="line-100"></a>                              <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-&gt;</font>
+<a name="line-101"></a>                                  <u><font color=Green>case</font></u> skip more <u><font color=Green>of</font></u>
+<a name="line-102"></a>                                      <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c'<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> Just c'
+<a name="line-103"></a>                                      v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" =&gt;"</font><font color=Cyan>)</font>
+<a name="line-104"></a>                              v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" no = or =&gt;"</font><font color=Cyan>)</font>
+<a name="line-105"></a>        <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-&gt;</font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>
+<a name="line-106"></a>                                   <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-&gt;</font>
+<a name="line-107"></a>                                       <u><font color=Green>case</font></u> skip more <u><font color=Green>of</font></u>
+<a name="line-108"></a>                                           <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c'<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> Just c'
+<a name="line-109"></a>                                           v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) =&gt;"</font><font color=Cyan>)</font>
+<a name="line-110"></a>                                   v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) no =&gt;"</font><font color=Cyan>)</font>
+<a name="line-111"></a>        v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"no Conid or (...)"</font><font color=Cyan>)</font>
+<a name="line-112"></a>    <u><font color=Green>where</font></u> debug   <u><font color=Green>_</font></u>   <u><font color=Green>_</font></u> <font color=Red>=</font> Nothing
+<a name="line-113"></a>       <font color=Blue>-- debug (s:t) c = error ("HsColour: getConid failed: "++show s</font>
+<a name="line-114"></a>       <font color=Blue>--                       ++"\n  in the context of: "++c)</font>
+<a name="line-115"></a>
+<a name="line-116"></a><a name="context"></a><font color=Blue>-- jump past possible class context</font>
+<a name="line-117"></a>context stream<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> stream
+<a name="line-118"></a>context stream<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> stream
+<a name="line-119"></a>context <font color=Cyan>(</font><u><font color=Green>_</font></u><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> context stream
+<a name="line-120"></a>context [] <font color=Red>=</font> []
+<a name="line-121"></a>
+<a name="line-122"></a><a name="ST"></a><font color=Blue>-- simple implementation of a string lookup table.</font>
+<a name="line-123"></a><a name="ST"></a><font color=Blue>-- replace this with something more sophisticated if needed.</font>
+<a name="line-124"></a><a name="ST"></a><u><font color=Green>type</font></u> ST <font color=Red>=</font> <font color=Red>[</font>String<font color=Red>]</font>
+<a name="line-125"></a>
+<a name="line-126"></a><a name="emptyST"></a>emptyST <font color=Red>::</font> ST
+<a name="line-127"></a>emptyST <font color=Red>=</font> []
+<a name="line-128"></a>
+<a name="line-129"></a><a name="insertST"></a>insertST <font color=Red>::</font> String <font color=Red>-&gt;</font> ST <font color=Red>-&gt;</font> ST
+<a name="line-130"></a>insertST k st <font color=Red>=</font> insert k st
+<a name="line-131"></a>
+<a name="line-132"></a><a name="inST"></a>inST <font color=Red>::</font> String <font color=Red>-&gt;</font> ST <font color=Red>-&gt;</font> Bool
+<a name="line-133"></a>inST k st <font color=Red>=</font> k <font color=Cyan>`elem`</font> st
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/CSS.html b/docs/hscolour/Language/Haskell/HsColour/CSS.html
--- a/docs/hscolour/Language/Haskell/HsColour/CSS.html
+++ b/docs/hscolour/Language/Haskell/HsColour/CSS.html
@@ -1,66 +1,83 @@
-<pre><font color=Blue>-- | Formats Haskell source code as HTML with CSS.</font>
-<u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>CSS <font color=Cyan>(</font>hscolour<font color=Cyan>,</font> hscolourFragment<font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <font color=Cyan>(</font>renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font> escape<font color=Cyan>)</font>
-
-<font color=Blue>-- | Formats Haskell source code as a complete HTML document with CSS.</font>
-hscolour <font color=Red>::</font> Bool   <font color=Blue>-- ^ Whether to include anchors</font>
-         <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Haskell source code.</font>
-         <font color=Red>-&gt;</font> String <font color=Blue>-- ^ An HTML document containing the coloured </font>
-                   <font color=Blue>--   Haskell source code.</font>
-<a name="hscolour"></a>hscolour anchor <font color=Red>=</font> top'n'tail <font color=Cyan>.</font> hscolourFragment anchor
-
-<font color=Blue>-- | Formats Haskell source code as an HTML fragment with CSS.</font>
-<font color=Blue>--   No stylesheet link is included in the output.</font>
-hscolourFragment <font color=Red>::</font> Bool   <font color=Blue>-- ^ Whether to include anchors</font>
-                 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Haskell source code.</font>
-                 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ An HTML fragment containing the coloured </font>
-                           <font color=Blue>--   Haskell source code.</font>
-<a name="hscolourFragment"></a>hscolourFragment anchor <font color=Red>=</font> 
-    pre <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor 
-           <u><font color=Green>then</font></u> concatMap <font color=Cyan>(</font>renderAnchors renderToken<font color=Cyan>)</font> <font color=Cyan>.</font> insertAnchors
-           <u><font color=Green>else</font></u> concatMap renderToken<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise
-
-top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String
-<a name="top'n'tail"></a>top'n'tail  <font color=Red>=</font> <font color=Cyan>(</font>cssPrefix<font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>cssSuffix<font color=Cyan>)</font>
-
-pre <font color=Red>::</font> String <font color=Red>-&gt;</font> String
-<a name="pre"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"&lt;pre&gt;"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"&lt;/pre&gt;"</font><font color=Cyan>)</font>
-
-renderToken <font color=Red>::</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
-<a name="renderToken"></a>renderToken <font color=Cyan>(</font>Space<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font> text
-renderToken <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&lt;span class='"</font> <font color=Cyan>++</font> cssClass cls <font color=Cyan>++</font> <font color=Magenta>"'&gt;"</font> <font color=Cyan>++</font>
-                           <font color=Cyan>(</font><u><font color=Green>if</font></u> cls <font color=Cyan>==</font> Comment <u><font color=Green>then</font></u> renderComment text <u><font color=Green>else</font></u> escape text<font color=Cyan>)</font> <font color=Cyan>++</font>
-                           <font color=Magenta>"&lt;/span&gt;"</font>
-
-<a name="cssClass"></a>cssClass Keyword  <font color=Red>=</font> <font color=Magenta>"keyword"</font>
-cssClass Keyglyph <font color=Red>=</font> <font color=Magenta>"keyglyph"</font>
-cssClass Layout   <font color=Red>=</font> <font color=Magenta>"layout"</font>
-cssClass Comment  <font color=Red>=</font> <font color=Magenta>"comment"</font>
-cssClass Conid    <font color=Red>=</font> <font color=Magenta>"conid"</font>
-cssClass Varid    <font color=Red>=</font> <font color=Magenta>"varid"</font>
-cssClass Conop    <font color=Red>=</font> <font color=Magenta>"conop"</font>
-cssClass Varop    <font color=Red>=</font> <font color=Magenta>"varop"</font>
-cssClass String   <font color=Red>=</font> <font color=Magenta>"str"</font>
-cssClass Char     <font color=Red>=</font> <font color=Magenta>"chr"</font>
-cssClass Number   <font color=Red>=</font> <font color=Magenta>"num"</font>
-cssClass Error    <font color=Red>=</font> <font color=Magenta>"sel"</font>
-
-<a name="cssPrefix"></a>cssPrefix <font color=Red>=</font> unlines
-    <font color=Red>[</font><font color=Magenta>"&lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"&gt;"</font>
-    <font color=Cyan>,</font><font color=Magenta>"&lt;html&gt;"</font>
-    <font color=Cyan>,</font><font color=Magenta>"&lt;head&gt;"</font>
-    <font color=Cyan>,</font><font color=Magenta>"&lt;!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ --&gt;"</font>
-    <font color=Cyan>,</font><font color=Magenta>"&lt;title&gt;Haskell Code by HsColour&lt;/title&gt;"</font>
-    <font color=Cyan>,</font><font color=Magenta>"&lt;link type='text/css' rel='stylesheet' href='hscolour.css' /&gt;"</font>
-    <font color=Cyan>,</font><font color=Magenta>"&lt;/head&gt;"</font>
-    <font color=Cyan>,</font><font color=Magenta>"&lt;body&gt;"</font>
-    <font color=Red>]</font>
-    
-<a name="cssSuffix"></a>cssSuffix <font color=Red>=</font> unlines
-    <font color=Red>[</font><font color=Magenta>"&lt;/body&gt;"</font>
-    <font color=Cyan>,</font><font color=Magenta>"&lt;/html&gt;"</font>
-    <font color=Red>]</font>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/CSS.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code as HTML with CSS.</font>
+<a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>CSS <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-3"></a>
+<a name="line-4"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors
+<a name="line-5"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify
+<a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <font color=Cyan>(</font>renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font>
+<a name="line-7"></a>                                       renderNewLinesAnchors<font color=Cyan>,</font> escape<font color=Cyan>)</font>
+<a name="line-8"></a>
+<a name="line-9"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code as a complete HTML document with CSS.</font>
+<a name="line-10"></a>hscolour <font color=Red>::</font> Bool   <font color=Blue>-- ^ Whether to include anchors.</font>
+<a name="line-11"></a>         <font color=Red>-&gt;</font> Bool   <font color=Blue>-- ^ Whether output should be partial</font>
+<a name="line-12"></a>                   <font color=Blue>--   (= no stylesheet link will be included.)</font>
+<a name="line-13"></a>         <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Title for HTML page.</font>
+<a name="line-14"></a>         <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Haskell source code.</font>
+<a name="line-15"></a>         <font color=Red>-&gt;</font> String <font color=Blue>-- ^ An HTML document containing the coloured </font>
+<a name="line-16"></a>                   <font color=Blue>--   Haskell source code.</font>
+<a name="line-17"></a>hscolour anchor partial title <font color=Red>=</font>
+<a name="line-18"></a>  <font color=Cyan>(</font><u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail title<font color=Cyan>)</font>
+<a name="line-19"></a>  <font color=Cyan>.</font> pre
+<a name="line-20"></a>  <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor 
+<a name="line-21"></a>        <u><font color=Green>then</font></u> renderNewLinesAnchors
+<a name="line-22"></a>             <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderAnchors renderToken<font color=Cyan>)</font>
+<a name="line-23"></a>             <font color=Cyan>.</font> insertAnchors
+<a name="line-24"></a>        <u><font color=Green>else</font></u> concatMap renderToken<font color=Cyan>)</font>
+<a name="line-25"></a>  <font color=Cyan>.</font> tokenise
+<a name="line-26"></a>
+<a name="line-27"></a><a name="top'n'tail"></a>top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
+<a name="line-28"></a>top'n'tail title  <font color=Red>=</font> <font color=Cyan>(</font>cssPrefix title <font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>cssSuffix<font color=Cyan>)</font>
+<a name="line-29"></a>
+<a name="line-30"></a><a name="pre"></a>pre <font color=Red>::</font> String <font color=Red>-&gt;</font> String
+<a name="line-31"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"&lt;pre&gt;"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"&lt;/pre&gt;"</font><font color=Cyan>)</font>
+<a name="line-32"></a>
+<a name="line-33"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
+<a name="line-34"></a>renderToken <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-35"></a>        before <font color=Cyan>++</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> cls <font color=Cyan>==</font> Comment <u><font color=Green>then</font></u> renderComment text <u><font color=Green>else</font></u> escape text<font color=Cyan>)</font> <font color=Cyan>++</font> after
+<a name="line-36"></a>    <u><font color=Green>where</font></u>
+<a name="line-37"></a>        before <font color=Red>=</font> <u><font color=Green>if</font></u> null cls2 <u><font color=Green>then</font></u> <font color=Magenta>""</font> <u><font color=Green>else</font></u> <font color=Magenta>"&lt;span class='"</font> <font color=Cyan>++</font> cls2 <font color=Cyan>++</font> <font color=Magenta>"'&gt;"</font>
+<a name="line-38"></a>        after  <font color=Red>=</font> <u><font color=Green>if</font></u> null cls2 <u><font color=Green>then</font></u> <font color=Magenta>""</font> <u><font color=Green>else</font></u> <font color=Magenta>"&lt;/span&gt;"</font>
+<a name="line-39"></a>        cls2 <font color=Red>=</font> cssClass cls
+<a name="line-40"></a>
+<a name="line-41"></a>
+<a name="line-42"></a><a name="cssClass"></a>cssClass Keyword  <font color=Red>=</font> <font color=Magenta>"keyword"</font>
+<a name="line-43"></a>cssClass Keyglyph <font color=Red>=</font> <font color=Magenta>"keyglyph"</font>
+<a name="line-44"></a>cssClass Layout   <font color=Red>=</font> <font color=Magenta>"layout"</font>
+<a name="line-45"></a>cssClass Comment  <font color=Red>=</font> <font color=Magenta>"comment"</font>
+<a name="line-46"></a>cssClass Conid    <font color=Red>=</font> <font color=Magenta>"conid"</font>
+<a name="line-47"></a>cssClass Varid    <font color=Red>=</font> <font color=Magenta>"varid"</font>
+<a name="line-48"></a>cssClass Conop    <font color=Red>=</font> <font color=Magenta>"conop"</font>
+<a name="line-49"></a>cssClass Varop    <font color=Red>=</font> <font color=Magenta>"varop"</font>
+<a name="line-50"></a>cssClass String   <font color=Red>=</font> <font color=Magenta>"str"</font>
+<a name="line-51"></a>cssClass Char     <font color=Red>=</font> <font color=Magenta>"chr"</font>
+<a name="line-52"></a>cssClass Number   <font color=Red>=</font> <font color=Magenta>"num"</font>
+<a name="line-53"></a>cssClass Cpp      <font color=Red>=</font> <font color=Magenta>"cpp"</font>
+<a name="line-54"></a>cssClass Error    <font color=Red>=</font> <font color=Magenta>"sel"</font>
+<a name="line-55"></a>cssClass Definition <font color=Red>=</font> <font color=Magenta>"definition"</font>
+<a name="line-56"></a>cssClass <u><font color=Green>_</font></u>        <font color=Red>=</font> <font color=Magenta>""</font>
+<a name="line-57"></a>
+<a name="line-58"></a>
+<a name="line-59"></a><a name="cssPrefix"></a>cssPrefix title <font color=Red>=</font> unlines
+<a name="line-60"></a>    <font color=Red>[</font><font color=Magenta>"&lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"&gt;"</font>
+<a name="line-61"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;html&gt;"</font>
+<a name="line-62"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;head&gt;"</font>
+<a name="line-63"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ --&gt;"</font>
+<a name="line-64"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;title&gt;"</font><font color=Cyan>++</font>title<font color=Cyan>++</font><font color=Magenta>"&lt;/title&gt;"</font>
+<a name="line-65"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;link type='text/css' rel='stylesheet' href='hscolour.css' /&gt;"</font>
+<a name="line-66"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;/head&gt;"</font>
+<a name="line-67"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;body&gt;"</font>
+<a name="line-68"></a>    <font color=Red>]</font>
+<a name="line-69"></a>    
+<a name="line-70"></a><a name="cssSuffix"></a>cssSuffix <font color=Red>=</font> unlines
+<a name="line-71"></a>    <font color=Red>[</font><font color=Magenta>"&lt;/body&gt;"</font>
+<a name="line-72"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;/html&gt;"</font>
+<a name="line-73"></a>    <font color=Red>]</font>
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/Classify.html b/docs/hscolour/Language/Haskell/HsColour/Classify.html
--- a/docs/hscolour/Language/Haskell/HsColour/Classify.html
+++ b/docs/hscolour/Language/Haskell/HsColour/Classify.html
@@ -1,100 +1,131 @@
-<pre><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify
-  <font color=Cyan>(</font> TokenType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-  <font color=Cyan>,</font> tokenise
-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Char
-<u><font color=Green>import</font></u> List
-
-<font color=Blue>-- Lex Haskell source code into an annotated token stream, without</font>
-<font color=Blue>-- discarding any characters or layout.</font>
-tokenise <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font>
-<a name="tokenise"></a>tokenise <font color=Red>=</font> map <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-&gt;</font> <font color=Cyan>(</font>classify s<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>.</font> glue <font color=Cyan>.</font> chunk
-
-<font color=Blue>-- Basic Haskell lexing, except we keep whitespace.</font>
-chunk <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>
-<a name="chunk"></a>chunk <font color=Red>[</font><font color=Red>]</font>    <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>
-chunk <font color=Cyan>(</font><font color=Magenta>'\r'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> chunk s <font color=Blue>-- get rid of DOS newline stuff</font>
-chunk <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\n"</font><b><font color=Red>:</font></b> chunk s
-chunk <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>|</font> isLinearSpace c
-            <font color=Red>=</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b>ss<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk rest <u><font color=Green>where</font></u> <font color=Cyan>(</font>ss<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> span isLinearSpace s
-chunk <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <u><font color=Green>let</font></u> <font color=Cyan>(</font>com<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Magenta>0</font> s
-                    <u><font color=Green>in</font></u> <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>com<font color=Cyan>)</font> <b><font color=Red>:</font></b> chunk s'
-chunk s <font color=Red>=</font> <u><font color=Green>case</font></u> Prelude<font color=Cyan>.</font>lex s <u><font color=Green>of</font></u>
-              <font color=Red>[</font><font color=Red>]</font>             <font color=Red>-&gt;</font> <font color=Red>[</font>head s<font color=Red>]</font><b><font color=Red>:</font></b> chunk <font color=Cyan>(</font>tail s<font color=Cyan>)</font> <font color=Blue>-- e.g. inside comment</font>
-              <font color=Cyan>(</font><font color=Cyan>(</font>tok<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font><font color=Cyan>,</font>rest<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>
-                  <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> tok <font color=Red>-&gt;</font> <font color=Cyan>(</font>tok<font color=Cyan>++</font>com<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk s'
-                                       <u><font color=Green>where</font></u> <font color=Cyan>(</font>com<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> eolcomment rest
-              <font color=Cyan>(</font><font color=Cyan>(</font>tok<font color=Cyan>,</font>rest<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> tok<b><font color=Red>:</font></b> chunk rest
-
-<a name="isLinearSpace"></a>isLinearSpace c <font color=Red>=</font> c <font color=Cyan>`elem`</font> <font color=Magenta>" \t"</font> <font color=Blue>-- " \t\xa0"</font>
-
-<font color=Blue>-- Glue sequences of tokens into more useful blobs</font>
-<font color=Blue>--glue (q:".":n:rest) | Char.isUpper (head q)	-- qualified names</font>
-<font color=Blue>--                    = glue ((q++"."++n): rest)</font>
-<a name="glue"></a>glue <font color=Cyan>(</font><font color=Magenta>"`"</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font>				<font color=Blue>-- `varid` -&gt; varop</font>
-  <u><font color=Green>case</font></u> glue rest <u><font color=Green>of</font></u>
-    <font color=Cyan>(</font>qn<b><font color=Red>:</font></b><font color=Magenta>"`"</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Magenta>"`"</font><font color=Cyan>++</font>qn<font color=Cyan>++</font><font color=Magenta>"`"</font><font color=Cyan>)</font><b><font color=Red>:</font></b> glue rest
-    <u><font color=Green>_</font></u>             <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Magenta>"`"</font><b><font color=Red>:</font></b> rest<font color=Cyan>)</font>
-glue <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font>       <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> s <font color=Cyan>&amp;&amp;</font> length s <font color=Cyan>&gt;=</font><font color=Magenta>2</font>	<font color=Blue>-- eol comment</font>
-                  <font color=Red>=</font> <font color=Cyan>(</font>s<font color=Cyan>++</font>concat c<font color=Cyan>)</font><b><font color=Red>:</font></b> glue rest
-                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>c<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> break <font color=Cyan>(</font><font color=Magenta>'\n'</font><font color=Cyan>`elem`</font><font color=Cyan>)</font> ss
-<font color=Blue>--glue ("{":"-":ss)  = ("{-"++c): glue rest	-- nested comment</font>
-<font color=Blue>--                  where (c,rest) = nestcomment 0 ss</font>
-glue <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font>       <font color=Red>=</font> s<b><font color=Red>:</font></b> glue ss
-glue <font color=Red>[</font><font color=Red>]</font>           <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>
-
-<font color=Blue>-- Deal with comments.</font>
-nestcomment <font color=Red>::</font> Int <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>
-<a name="nestcomment"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>&gt;=</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"{-"</font><font color=Cyan>++</font>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>
-                                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> ss
-nestcomment n <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>&gt;</font><font color=Magenta>0</font>  <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"-}"</font><font color=Cyan>++</font>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>
-                                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> ss
-nestcomment n <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>==</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"-}"</font><font color=Cyan>,</font>ss<font color=Cyan>)</font>
-nestcomment n <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font>       <font color=Red>|</font> n<font color=Cyan>&gt;=</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font>s<b><font color=Red>:</font></b>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>
-                                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment n ss
-nestcomment n <font color=Red>[</font><font color=Red>]</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>,</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>
-
-eolcomment <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>
-<a name="eolcomment"></a>eolcomment s<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>,</font> s<font color=Cyan>)</font>
-eolcomment <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font>      <font color=Red>=</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>,</font> s'<font color=Cyan>)</font> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> eolcomment s
-eolcomment <font color=Red>[</font><font color=Red>]</font>         <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>,</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>
-
-<font color=Blue>-- Classify tokens</font>
-<a name="TokenType"></a><u><font color=Green>data</font></u> TokenType <font color=Red>=</font>
-  Space <font color=Red>|</font> Keyword <font color=Red>|</font> Keyglyph <font color=Red>|</font> Layout <font color=Red>|</font> Comment <font color=Red>|</font> Conid <font color=Red>|</font> Varid <font color=Red>|</font>
-  Conop <font color=Red>|</font> Varop   <font color=Red>|</font> String   <font color=Red>|</font> Char   <font color=Red>|</font> Number  <font color=Red>|</font> Error
-  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>
-
-classify <font color=Red>::</font> String <font color=Red>-&gt;</font> TokenType
-<a name="classify"></a>classify s<font color=Red>@</font><font color=Cyan>(</font>h<b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>
-    <font color=Red>|</font> isSpace h              <font color=Red>=</font> Space
-    <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> s          <font color=Red>=</font> Comment
-    <font color=Red>|</font> <font color=Magenta>"--"</font> <font color=Cyan>`isPrefixOf`</font> s
-      <font color=Cyan>&amp;&amp;</font> any isSpace s       <font color=Red>=</font> Comment		<font color=Blue>-- not fully correct</font>
-    <font color=Red>|</font> <font color=Magenta>"{-"</font> <font color=Cyan>`isPrefixOf`</font> s    <font color=Red>=</font> Comment
-    <font color=Red>|</font> s <font color=Cyan>`elem`</font> keywords      <font color=Red>=</font> Keyword
-    <font color=Red>|</font> s <font color=Cyan>`elem`</font> keyglyphs     <font color=Red>=</font> Keyglyph
-    <font color=Red>|</font> s <font color=Cyan>`elem`</font> layoutchars   <font color=Red>=</font> Layout
-    <font color=Red>|</font> isUpper h              <font color=Red>=</font> Conid
-    <font color=Red>|</font> isLower h              <font color=Red>=</font> Varid
-    <font color=Red>|</font> h <font color=Cyan>`elem`</font> symbols       <font color=Red>=</font> Varop
-    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>':'</font>                 <font color=Red>=</font> Conop
-    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'`'</font>                 <font color=Red>=</font> Varop
-    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'"'</font>                 <font color=Red>=</font> String
-    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'\''</font>                <font color=Red>=</font> Char
-    <font color=Red>|</font> isDigit h              <font color=Red>=</font> Number
-    <font color=Red>|</font> otherwise              <font color=Red>=</font> Error
-
-<font color=Blue>-- Haskell keywords</font>
-<a name="keywords"></a>keywords <font color=Red>=</font>
-  <font color=Red>[</font><font color=Magenta>"case"</font><font color=Cyan>,</font><font color=Magenta>"class"</font><font color=Cyan>,</font><font color=Magenta>"data"</font><font color=Cyan>,</font><font color=Magenta>"default"</font><font color=Cyan>,</font><font color=Magenta>"deriving"</font><font color=Cyan>,</font><font color=Magenta>"do"</font><font color=Cyan>,</font><font color=Magenta>"else"</font>
-  <font color=Cyan>,</font><font color=Magenta>"if"</font><font color=Cyan>,</font><font color=Magenta>"import"</font><font color=Cyan>,</font><font color=Magenta>"in"</font><font color=Cyan>,</font><font color=Magenta>"infix"</font><font color=Cyan>,</font><font color=Magenta>"infixl"</font><font color=Cyan>,</font><font color=Magenta>"infixr"</font><font color=Cyan>,</font><font color=Magenta>"instance"</font><font color=Cyan>,</font><font color=Magenta>"let"</font><font color=Cyan>,</font><font color=Magenta>"module"</font>
-  <font color=Cyan>,</font><font color=Magenta>"newtype"</font><font color=Cyan>,</font><font color=Magenta>"of"</font><font color=Cyan>,</font><font color=Magenta>"then"</font><font color=Cyan>,</font><font color=Magenta>"type"</font><font color=Cyan>,</font><font color=Magenta>"where"</font><font color=Cyan>,</font><font color=Magenta>"_"</font><font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>,</font><font color=Magenta>"ccall"</font><font color=Cyan>,</font><font color=Magenta>"as"</font><font color=Red>]</font>
-<a name="keyglyphs"></a>keyglyphs <font color=Red>=</font>
-  <font color=Red>[</font><font color=Magenta>".."</font><font color=Cyan>,</font><font color=Magenta>"::"</font><font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>,</font><font color=Magenta>"\\"</font><font color=Cyan>,</font><font color=Magenta>"|"</font><font color=Cyan>,</font><font color=Magenta>"&lt;-"</font><font color=Cyan>,</font><font color=Magenta>"-&gt;"</font><font color=Cyan>,</font><font color=Magenta>"@"</font><font color=Cyan>,</font><font color=Magenta>"~"</font><font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>,</font><font color=Magenta>"["</font><font color=Cyan>,</font><font color=Magenta>"]"</font><font color=Red>]</font>
-<a name="layoutchars"></a>layoutchars <font color=Red>=</font>
-  map <font color=Cyan>(</font><b><font color=Red>:</font></b><font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Magenta>";{}(),"</font>
-<a name="symbols"></a>symbols <font color=Red>=</font>
-  <font color=Magenta>"!#$%&amp;*+./&lt;=&gt;?@\\^|-~"</font>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/Classify.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify
+<a name="line-2"></a>  <font color=Cyan>(</font> TokenType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-3"></a>  <font color=Cyan>,</font> tokenise
+<a name="line-4"></a>  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-5"></a>
+<a name="line-6"></a><u><font color=Green>import</font></u> Char
+<a name="line-7"></a><u><font color=Green>import</font></u> List
+<a name="line-8"></a>
+<a name="line-9"></a><a name="tokenise"></a><font color=Blue>-- | Lex Haskell source code into an annotated token stream, without</font>
+<a name="line-10"></a><font color=Blue>--   discarding any characters or layout.</font>
+<a name="line-11"></a>tokenise <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font>
+<a name="line-12"></a>tokenise str <font color=Red>=</font> 
+<a name="line-13"></a>    <u><font color=Green>let</font></u> chunks <font color=Red>=</font> glue <font color=Cyan>.</font> chunk <font color=Cyan>$</font> str 
+<a name="line-14"></a>        newline <font color=Red>=</font> True <b><font color=Red>:</font></b> <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Magenta>"\n"</font> <font color=Cyan>`isPrefixOf`</font><font color=Cyan>)</font> chunks<font color=Cyan>)</font>
+<a name="line-15"></a>    <u><font color=Green>in</font></u> map <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>s<font color=Cyan>,</font>n<font color=Cyan>)</font><font color=Red>-&gt;</font> <font color=Cyan>(</font>classify s n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>zip chunks newline<font color=Cyan>)</font>
+<a name="line-16"></a>
+<a name="line-17"></a><a name="chunk"></a><font color=Blue>-- Basic Haskell lexing, except we keep whitespace.</font>
+<a name="line-18"></a>chunk <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>
+<a name="line-19"></a>chunk []    <font color=Red>=</font> []
+<a name="line-20"></a>chunk <font color=Cyan>(</font><font color=Magenta>'\r'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> chunk s <font color=Blue>-- get rid of DOS newline stuff</font>
+<a name="line-21"></a>chunk <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\n"</font><b><font color=Red>:</font></b> chunk s
+<a name="line-22"></a>chunk <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>|</font> isLinearSpace c
+<a name="line-23"></a>            <font color=Red>=</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b>ss<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk rest <u><font color=Green>where</font></u> <font color=Cyan>(</font>ss<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> span isLinearSpace s
+<a name="line-24"></a>chunk <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <u><font color=Green>let</font></u> <font color=Cyan>(</font>com<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Magenta>0</font> s
+<a name="line-25"></a>                    <u><font color=Green>in</font></u> <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>com<font color=Cyan>)</font> <b><font color=Red>:</font></b> chunk s'
+<a name="line-26"></a>chunk s <font color=Red>=</font> <u><font color=Green>case</font></u> Prelude<font color=Cyan>.</font>lex s <u><font color=Green>of</font></u>
+<a name="line-27"></a>              []             <font color=Red>-&gt;</font> <font color=Red>[</font>head s<font color=Red>]</font><b><font color=Red>:</font></b> chunk <font color=Cyan>(</font>tail s<font color=Cyan>)</font> <font color=Blue>-- e.g. inside comment</font>
+<a name="line-28"></a>              <font color=Cyan>(</font><font color=Cyan>(</font>tok<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font><font color=Cyan>,</font>rest<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>
+<a name="line-29"></a>                  <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> tok <font color=Red>-&gt;</font> <font color=Cyan>(</font>tok<font color=Cyan>++</font>com<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk s'
+<a name="line-30"></a>                                       <u><font color=Green>where</font></u> <font color=Cyan>(</font>com<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> eolcomment rest
+<a name="line-31"></a>              <font color=Cyan>(</font><font color=Cyan>(</font>tok<font color=Cyan>,</font>rest<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> tok<b><font color=Red>:</font></b> chunk rest
+<a name="line-32"></a>
+<a name="line-33"></a><a name="isLinearSpace"></a>isLinearSpace c <font color=Red>=</font> c <font color=Cyan>`elem`</font> <font color=Magenta>" \t\f"</font> <font color=Blue>-- " \t\xa0"</font>
+<a name="line-34"></a>
+<a name="line-35"></a><a name="glue"></a><font color=Blue>-- Glue sequences of tokens into more useful blobs</font>
+<a name="line-36"></a><font color=Blue>--glue (q:".":n:rest) | Char.isUpper (head q)	-- qualified names</font>
+<a name="line-37"></a><font color=Blue>--                    = glue ((q++"."++n): rest)</font>
+<a name="line-38"></a>glue <font color=Cyan>(</font><font color=Magenta>"`"</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font>				<font color=Blue>-- `varid` -&gt; varop</font>
+<a name="line-39"></a>  <u><font color=Green>case</font></u> glue rest <u><font color=Green>of</font></u>
+<a name="line-40"></a>    <font color=Cyan>(</font>qn<b><font color=Red>:</font></b><font color=Magenta>"`"</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Magenta>"`"</font><font color=Cyan>++</font>qn<font color=Cyan>++</font><font color=Magenta>"`"</font><font color=Cyan>)</font><b><font color=Red>:</font></b> glue rest
+<a name="line-41"></a>    <u><font color=Green>_</font></u>             <font color=Red>-&gt;</font> <font color=Magenta>"`"</font><b><font color=Red>:</font></b> glue rest
+<a name="line-42"></a>glue <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font>       <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> s <font color=Cyan>&amp;&amp;</font> length s <font color=Cyan>&gt;=</font><font color=Magenta>2</font>	<font color=Blue>-- eol comment</font>
+<a name="line-43"></a>                  <font color=Red>=</font> <font color=Cyan>(</font>s<font color=Cyan>++</font>concat c<font color=Cyan>)</font><b><font color=Red>:</font></b> glue rest
+<a name="line-44"></a>                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>c<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> break <font color=Cyan>(</font><font color=Magenta>'\n'</font><font color=Cyan>`elem`</font><font color=Cyan>)</font> ss
+<a name="line-45"></a><font color=Blue>--glue ("{":"-":ss)  = ("{-"++c): glue rest	-- nested comment</font>
+<a name="line-46"></a><font color=Blue>--                  where (c,rest) = nestcomment 0 ss</font>
+<a name="line-47"></a>glue <font color=Cyan>(</font><font color=Magenta>"("</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <u><font color=Green>case</font></u> rest <u><font color=Green>of</font></u>
+<a name="line-48"></a>                <font color=Magenta>")"</font><b><font color=Red>:</font></b>rest <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Magenta>"("</font> <font color=Cyan>++</font> concat tuple <font color=Cyan>++</font> <font color=Magenta>")"</font><font color=Cyan>)</font> <b><font color=Red>:</font></b> glue rest
+<a name="line-49"></a>                <u><font color=Green>_</font></u>         <font color=Red>-&gt;</font> <font color=Magenta>"("</font> <b><font color=Red>:</font></b> glue ss
+<a name="line-50"></a>              <u><font color=Green>where</font></u> <font color=Cyan>(</font>tuple<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> span <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>","</font><font color=Cyan>)</font> ss
+<a name="line-51"></a>glue <font color=Cyan>(</font><font color=Magenta>"["</font><b><font color=Red>:</font></b><font color=Magenta>"]"</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"[]"</font> <b><font color=Red>:</font></b> glue ss
+<a name="line-52"></a>glue <font color=Cyan>(</font><font color=Magenta>"\n"</font><b><font color=Red>:</font></b><font color=Magenta>"#"</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font><font color=Red>=</font> <font color=Magenta>"\n"</font> <b><font color=Red>:</font></b> <font color=Cyan>(</font><font color=Magenta>'#'</font><b><font color=Red>:</font></b>concat line<font color=Cyan>)</font> <b><font color=Red>:</font></b> glue rest
+<a name="line-53"></a>                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>line<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> break <font color=Cyan>(</font><font color=Magenta>'\n'</font><font color=Cyan>`elem`</font><font color=Cyan>)</font> ss
+<a name="line-54"></a>glue <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font>       <font color=Red>=</font> s<b><font color=Red>:</font></b> glue ss
+<a name="line-55"></a>glue []           <font color=Red>=</font> []
+<a name="line-56"></a>
+<a name="line-57"></a><a name="nestcomment"></a><font color=Blue>-- Deal with comments.</font>
+<a name="line-58"></a>nestcomment <font color=Red>::</font> Int <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>
+<a name="line-59"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>&gt;=</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"{-"</font><font color=Cyan>++</font>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>
+<a name="line-60"></a>                                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> ss
+<a name="line-61"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>&gt;</font><font color=Magenta>0</font>  <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"-}"</font><font color=Cyan>++</font>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>
+<a name="line-62"></a>                                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> ss
+<a name="line-63"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>==</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"-}"</font><font color=Cyan>,</font>ss<font color=Cyan>)</font>
+<a name="line-64"></a>nestcomment n <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font>       <font color=Red>|</font> n<font color=Cyan>&gt;=</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font>s<b><font color=Red>:</font></b>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>
+<a name="line-65"></a>                                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment n ss
+<a name="line-66"></a>nestcomment n [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>
+<a name="line-67"></a>
+<a name="line-68"></a><a name="eolcomment"></a>eolcomment <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>
+<a name="line-69"></a>eolcomment s<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> s<font color=Cyan>)</font>
+<a name="line-70"></a>eolcomment <font color=Cyan>(</font><font color=Magenta>'\r'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font>   <font color=Red>=</font> eolcomment s
+<a name="line-71"></a>eolcomment <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font>      <font color=Red>=</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>,</font> s'<font color=Cyan>)</font> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> eolcomment s
+<a name="line-72"></a>eolcomment []         <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>
+<a name="line-73"></a>
+<a name="line-74"></a><a name="TokenType"></a><font color=Blue>-- | Classification of tokens as lexical entities</font>
+<a name="line-75"></a><a name="TokenType"></a><u><font color=Green>data</font></u> TokenType <font color=Red>=</font>
+<a name="line-76"></a>  Space <font color=Red>|</font> Keyword <font color=Red>|</font> Keyglyph <font color=Red>|</font> Layout <font color=Red>|</font> Comment <font color=Red>|</font> Conid <font color=Red>|</font> Varid <font color=Red>|</font>
+<a name="line-77"></a>  Conop <font color=Red>|</font> Varop   <font color=Red>|</font> String   <font color=Red>|</font> Char   <font color=Red>|</font> Number  <font color=Red>|</font> Cpp   <font color=Red>|</font> Error <font color=Red>|</font>
+<a name="line-78"></a>  Definition
+<a name="line-79"></a>  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>
+<a name="line-80"></a>
+<a name="line-81"></a><a name="classify"></a>classify <font color=Red>::</font> String <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> TokenType
+<a name="line-82"></a>classify s<font color=Red>@</font><font color=Cyan>(</font>h<b><font color=Red>:</font></b>t<font color=Cyan>)</font> newline
+<a name="line-83"></a>    <font color=Red>|</font> isSpace h              <font color=Red>=</font> Space
+<a name="line-84"></a>    <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> s          <font color=Red>=</font> Comment
+<a name="line-85"></a>    <font color=Red>|</font> <font color=Magenta>"--"</font> <font color=Cyan>`isPrefixOf`</font> s
+<a name="line-86"></a>      <font color=Cyan>&amp;&amp;</font> any isSpace s       <font color=Red>=</font> Comment		<font color=Blue>-- not fully correct</font>
+<a name="line-87"></a>    <font color=Red>|</font> <font color=Magenta>"{-"</font> <font color=Cyan>`isPrefixOf`</font> s    <font color=Red>=</font> Comment
+<a name="line-88"></a>    <font color=Red>|</font> s <font color=Cyan>`elem`</font> keywords      <font color=Red>=</font> Keyword
+<a name="line-89"></a>    <font color=Red>|</font> s <font color=Cyan>`elem`</font> keyglyphs     <font color=Red>=</font> Keyglyph
+<a name="line-90"></a>    <font color=Red>|</font> s <font color=Cyan>`elem`</font> layoutchars   <font color=Red>=</font> Layout
+<a name="line-91"></a>    <font color=Red>|</font> isUpper h              <font color=Red>=</font> Conid
+<a name="line-92"></a>    <font color=Red>|</font> s <font color=Cyan>==</font> <font color=Magenta>"[]"</font>              <font color=Red>=</font> Conid
+<a name="line-93"></a>    <font color=Red>|</font> h <font color=Cyan>==</font> <font color=Magenta>'('</font> <font color=Cyan>&amp;&amp;</font> isTupleTail t <font color=Red>=</font> Conid
+<a name="line-94"></a>    <font color=Red>|</font> h <font color=Cyan>==</font> <font color=Magenta>'#'</font>               <font color=Red>=</font> Cpp
+<a name="line-95"></a>    <font color=Red>|</font> isLower h              <font color=Red>=</font> <u><font color=Green>if</font></u> newline <u><font color=Green>then</font></u> Definition <u><font color=Green>else</font></u> Varid
+<a name="line-96"></a>    <font color=Red>|</font> h <font color=Cyan>`elem`</font> symbols       <font color=Red>=</font> Varop
+<a name="line-97"></a>    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>':'</font>                 <font color=Red>=</font> Conop
+<a name="line-98"></a>    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'`'</font>                 <font color=Red>=</font> Varop
+<a name="line-99"></a>    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'"'</font>                 <font color=Red>=</font> String
+<a name="line-100"></a>    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'\''</font>                <font color=Red>=</font> Char
+<a name="line-101"></a>    <font color=Red>|</font> isDigit h              <font color=Red>=</font> Number
+<a name="line-102"></a>    <font color=Red>|</font> otherwise              <font color=Red>=</font> Error
+<a name="line-103"></a>classify <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> Space
+<a name="line-104"></a>
+<a name="line-105"></a><a name="isTupleTail"></a>isTupleTail <font color=Red>[</font><font color=Magenta>')'</font><font color=Red>]</font> <font color=Red>=</font> True
+<a name="line-106"></a>isTupleTail <font color=Cyan>(</font><font color=Magenta>','</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> isTupleTail xs
+<a name="line-107"></a>isTupleTail <u><font color=Green>_</font></u> <font color=Red>=</font> False
+<a name="line-108"></a>
+<a name="line-109"></a>
+<a name="line-110"></a><a name="keywords"></a><font color=Blue>-- Haskell keywords</font>
+<a name="line-111"></a>keywords <font color=Red>=</font>
+<a name="line-112"></a>  <font color=Red>[</font><font color=Magenta>"case"</font><font color=Cyan>,</font><font color=Magenta>"class"</font><font color=Cyan>,</font><font color=Magenta>"data"</font><font color=Cyan>,</font><font color=Magenta>"default"</font><font color=Cyan>,</font><font color=Magenta>"deriving"</font><font color=Cyan>,</font><font color=Magenta>"do"</font><font color=Cyan>,</font><font color=Magenta>"else"</font><font color=Cyan>,</font><font color=Magenta>"forall"</font>
+<a name="line-113"></a>  <font color=Cyan>,</font><font color=Magenta>"if"</font><font color=Cyan>,</font><font color=Magenta>"import"</font><font color=Cyan>,</font><font color=Magenta>"in"</font><font color=Cyan>,</font><font color=Magenta>"infix"</font><font color=Cyan>,</font><font color=Magenta>"infixl"</font><font color=Cyan>,</font><font color=Magenta>"infixr"</font><font color=Cyan>,</font><font color=Magenta>"instance"</font><font color=Cyan>,</font><font color=Magenta>"let"</font><font color=Cyan>,</font><font color=Magenta>"module"</font>
+<a name="line-114"></a>  <font color=Cyan>,</font><font color=Magenta>"newtype"</font><font color=Cyan>,</font><font color=Magenta>"of"</font><font color=Cyan>,</font><font color=Magenta>"qualified"</font><font color=Cyan>,</font><font color=Magenta>"then"</font><font color=Cyan>,</font><font color=Magenta>"type"</font><font color=Cyan>,</font><font color=Magenta>"where"</font><font color=Cyan>,</font><font color=Magenta>"_"</font>
+<a name="line-115"></a>  <font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>,</font><font color=Magenta>"ccall"</font><font color=Cyan>,</font><font color=Magenta>"as"</font><font color=Cyan>,</font><font color=Magenta>"safe"</font><font color=Cyan>,</font><font color=Magenta>"unsafe"</font><font color=Red>]</font>
+<a name="line-116"></a><a name="keyglyphs"></a>keyglyphs <font color=Red>=</font>
+<a name="line-117"></a>  <font color=Red>[</font><font color=Magenta>".."</font><font color=Cyan>,</font><font color=Magenta>"::"</font><font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>,</font><font color=Magenta>"\\"</font><font color=Cyan>,</font><font color=Magenta>"|"</font><font color=Cyan>,</font><font color=Magenta>"&lt;-"</font><font color=Cyan>,</font><font color=Magenta>"-&gt;"</font><font color=Cyan>,</font><font color=Magenta>"@"</font><font color=Cyan>,</font><font color=Magenta>"~"</font><font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>,</font><font color=Magenta>"["</font><font color=Cyan>,</font><font color=Magenta>"]"</font><font color=Red>]</font>
+<a name="line-118"></a><a name="layoutchars"></a>layoutchars <font color=Red>=</font>
+<a name="line-119"></a>  map <font color=Cyan>(</font><b><font color=Red>:</font></b>[]<font color=Cyan>)</font> <font color=Magenta>";{}(),"</font>
+<a name="line-120"></a><a name="symbols"></a>symbols <font color=Red>=</font>
+<a name="line-121"></a>  <font color=Magenta>"!#$%&amp;*+./&lt;=&gt;?@\\^|-~"</font>
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/ColourHighlight.html b/docs/hscolour/Language/Haskell/HsColour/ColourHighlight.html
--- a/docs/hscolour/Language/Haskell/HsColour/ColourHighlight.html
+++ b/docs/hscolour/Language/Haskell/HsColour/ColourHighlight.html
@@ -1,21 +1,32 @@
-<pre><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight
-  <font color=Cyan>(</font> Colour<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-  <font color=Cyan>,</font> Highlight<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<a name="Colour"></a><u><font color=Green>data</font></u> Colour <font color=Red>=</font> Black <font color=Red>|</font> Red <font color=Red>|</font> Green <font color=Red>|</font> Yellow <font color=Red>|</font> Blue <font color=Red>|</font> Magenta <font color=Red>|</font> Cyan <font color=Red>|</font> White
-  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>,</font>Enum<font color=Cyan>)</font>
-
-<a name="Highlight"></a><u><font color=Green>data</font></u> Highlight <font color=Red>=</font>
-    Normal
-  <font color=Red>|</font> Bold
-  <font color=Red>|</font> Dim
-  <font color=Red>|</font> Underscore
-  <font color=Red>|</font> Blink
-  <font color=Red>|</font> ReverseVideo
-  <font color=Red>|</font> Concealed
-  <font color=Red>|</font> Foreground Colour
-  <font color=Red>|</font> Background Colour
-  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>)</font>
-
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/ColourHighlight.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight
+<a name="line-2"></a>  <font color=Cyan>(</font> Colour<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-3"></a>  <font color=Cyan>,</font> Highlight<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-4"></a>  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-5"></a>
+<a name="line-6"></a><a name="Colour"></a><font color=Blue>-- | Colours supported by ANSI codes.</font>
+<a name="line-7"></a><a name="Colour"></a><u><font color=Green>data</font></u> Colour <font color=Red>=</font> Black <font color=Red>|</font> Red <font color=Red>|</font> Green <font color=Red>|</font> Yellow <font color=Red>|</font> Blue <font color=Red>|</font> Magenta <font color=Red>|</font> Cyan <font color=Red>|</font> White
+<a name="line-8"></a>  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>,</font>Enum<font color=Cyan>)</font>
+<a name="line-9"></a>
+<a name="line-10"></a><a name="Highlight"></a><font color=Blue>-- | Types of highlighting supported by ANSI codes.</font>
+<a name="line-11"></a><a name="Highlight"></a><u><font color=Green>data</font></u> Highlight <font color=Red>=</font>
+<a name="line-12"></a>    Normal
+<a name="line-13"></a>  <font color=Red>|</font> Bold
+<a name="line-14"></a>  <font color=Red>|</font> Dim
+<a name="line-15"></a>  <font color=Red>|</font> Underscore
+<a name="line-16"></a>  <font color=Red>|</font> Blink
+<a name="line-17"></a>  <font color=Red>|</font> ReverseVideo
+<a name="line-18"></a>  <font color=Red>|</font> Concealed
+<a name="line-19"></a>  <font color=Red>|</font> Foreground Colour
+<a name="line-20"></a>  <font color=Red>|</font> Background Colour
+<a name="line-21"></a>  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>)</font>
+<a name="line-22"></a>
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/Colourise.html b/docs/hscolour/Language/Haskell/HsColour/Colourise.html
--- a/docs/hscolour/Language/Haskell/HsColour/Colourise.html
+++ b/docs/hscolour/Language/Haskell/HsColour/Colourise.html
@@ -1,65 +1,89 @@
-<pre><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
-  <font color=Cyan>(</font> <u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight
-  <font color=Cyan>,</font> ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-  <font color=Cyan>,</font> readColourPrefs
-  <font color=Cyan>,</font> colourise
-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <font color=Cyan>(</font>TokenType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>
-
-<u><font color=Green>import</font></u> System <font color=Cyan>(</font>getEnv<font color=Cyan>)</font>
-<u><font color=Green>import</font></u> Char
-<u><font color=Green>import</font></u> List
-
-<font color=Blue>-- | Colour preferences.</font>
-<a name="ColourPrefs"></a><u><font color=Green>data</font></u> ColourPrefs <font color=Red>=</font> ColourPrefs
-  <font color=Cyan>{</font> keyword<font color=Cyan>,</font> keyglyph<font color=Cyan>,</font> layout<font color=Cyan>,</font> comment
-  <font color=Cyan>,</font> conid<font color=Cyan>,</font> varid<font color=Cyan>,</font> conop<font color=Cyan>,</font> varop
-  <font color=Cyan>,</font> string<font color=Cyan>,</font> char<font color=Cyan>,</font> number
-  <font color=Cyan>,</font> selection<font color=Cyan>,</font> variantselection <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font>
-  <font color=Cyan>}</font> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>)</font>
-
-<a name="defaultColourPrefs"></a>defaultColourPrefs <font color=Red>=</font> ColourPrefs
-  <font color=Cyan>{</font> keyword  <font color=Red>=</font> <font color=Red>[</font>Foreground Green<font color=Cyan>,</font>Underscore<font color=Red>]</font>
-  <font color=Cyan>,</font> keyglyph <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Red>]</font>
-  <font color=Cyan>,</font> layout   <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>
-  <font color=Cyan>,</font> comment  <font color=Red>=</font> <font color=Red>[</font>Foreground Blue<font color=Red>]</font>
-  <font color=Cyan>,</font> conid    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>
-  <font color=Cyan>,</font> varid    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>
-  <font color=Cyan>,</font> conop    <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Cyan>,</font>Bold<font color=Red>]</font>
-  <font color=Cyan>,</font> varop    <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>
-  <font color=Cyan>,</font> string   <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>
-  <font color=Cyan>,</font> char     <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>
-  <font color=Cyan>,</font> number   <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>
-  <font color=Cyan>,</font> selection <font color=Red>=</font> <font color=Red>[</font>Bold<font color=Cyan>,</font> Foreground Magenta<font color=Red>]</font>
-  <font color=Cyan>,</font> variantselection <font color=Red>=</font> <font color=Red>[</font>Dim<font color=Cyan>,</font> Foreground Red<font color=Cyan>,</font> Underscore<font color=Red>]</font>
-  <font color=Cyan>}</font>
-
-readColourPrefs <font color=Red>::</font> IO ColourPrefs
-<a name="readColourPrefs"></a>readColourPrefs <font color=Red>=</font> catch
-  <font color=Cyan>(</font><u><font color=Green>do</font></u> val <font color=Red>&lt;-</font> readFile <font color=Magenta>".hscolour"</font>
-      return <font color=Cyan>(</font>read val<font color=Cyan>)</font><font color=Cyan>)</font>
-  <font color=Cyan>(</font><font color=Red>\</font>e<font color=Red>-&gt;</font> catch
-    <font color=Cyan>(</font><u><font color=Green>do</font></u> home <font color=Red>&lt;-</font> getEnv <font color=Magenta>"HOME"</font>
-        val <font color=Red>&lt;-</font> readFile <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font>
-        return <font color=Cyan>(</font>read val<font color=Cyan>)</font><font color=Cyan>)</font>
-    <font color=Cyan>(</font><font color=Red>\</font>e<font color=Red>-&gt;</font> return defaultColourPrefs<font color=Cyan>)</font><font color=Cyan>)</font>
-
-<font color=Blue>-- Convert classification to colour highlights.</font>
-colourise <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> TokenType <font color=Red>-&gt;</font> <font color=Red>[</font>Highlight<font color=Red>]</font>
-<a name="colourise"></a>colourise pref Space    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>
-colourise pref Comment  <font color=Red>=</font> comment pref
-colourise pref Keyword  <font color=Red>=</font> keyword pref
-colourise pref Keyglyph <font color=Red>=</font> keyglyph pref
-colourise pref Layout   <font color=Red>=</font> layout pref
-colourise pref Conid    <font color=Red>=</font> conid pref
-colourise pref Varid    <font color=Red>=</font> varid pref
-colourise pref Conop    <font color=Red>=</font> conop pref
-colourise pref Varop    <font color=Red>=</font> varop pref
-colourise pref String   <font color=Red>=</font> string pref
-colourise pref Char     <font color=Red>=</font> char pref
-colourise pref Number   <font color=Red>=</font> number pref
-colourise pref Error    <font color=Red>=</font> selection pref
-
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/Colourise.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
+<a name="line-2"></a>  <font color=Cyan>(</font> <u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight
+<a name="line-3"></a>  <font color=Cyan>,</font> ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-4"></a>  <font color=Cyan>,</font> readColourPrefs
+<a name="line-5"></a>  <font color=Cyan>,</font> colourise
+<a name="line-6"></a>  <font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-7"></a>
+<a name="line-8"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight
+<a name="line-9"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <font color=Cyan>(</font>TokenType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-10"></a>
+<a name="line-11"></a><u><font color=Green>import</font></u> IO <font color=Cyan>(</font>hPutStrLn<font color=Cyan>,</font>stderr<font color=Cyan>)</font>
+<a name="line-12"></a><u><font color=Green>import</font></u> System <font color=Cyan>(</font>getEnv<font color=Cyan>)</font>
+<a name="line-13"></a><u><font color=Green>import</font></u> List
+<a name="line-14"></a>
+<a name="line-15"></a><a name="ColourPrefs"></a><font color=Blue>-- | Colour preferences.</font>
+<a name="line-16"></a><a name="ColourPrefs"></a><u><font color=Green>data</font></u> ColourPrefs <font color=Red>=</font> ColourPrefs
+<a name="line-17"></a>  <font color=Cyan>{</font> keyword<font color=Cyan>,</font> keyglyph<font color=Cyan>,</font> layout<font color=Cyan>,</font> comment
+<a name="line-18"></a>  <font color=Cyan>,</font> conid<font color=Cyan>,</font> varid<font color=Cyan>,</font> conop<font color=Cyan>,</font> varop
+<a name="line-19"></a>  <font color=Cyan>,</font> string<font color=Cyan>,</font> char<font color=Cyan>,</font> number<font color=Cyan>,</font> cpp
+<a name="line-20"></a>  <font color=Cyan>,</font> selection<font color=Cyan>,</font> variantselection<font color=Cyan>,</font> definition <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font>
+<a name="line-21"></a>  <font color=Cyan>}</font> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>)</font>
+<a name="line-22"></a>
+<a name="line-23"></a><a name="defaultColourPrefs"></a>defaultColourPrefs <font color=Red>=</font> ColourPrefs
+<a name="line-24"></a>  <font color=Cyan>{</font> keyword  <font color=Red>=</font> <font color=Red>[</font>Foreground Green<font color=Cyan>,</font>Underscore<font color=Red>]</font>
+<a name="line-25"></a>  <font color=Cyan>,</font> keyglyph <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Red>]</font>
+<a name="line-26"></a>  <font color=Cyan>,</font> layout   <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>
+<a name="line-27"></a>  <font color=Cyan>,</font> comment  <font color=Red>=</font> <font color=Red>[</font>Foreground Blue<font color=Red>]</font>
+<a name="line-28"></a>  <font color=Cyan>,</font> conid    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>
+<a name="line-29"></a>  <font color=Cyan>,</font> varid    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>
+<a name="line-30"></a>  <font color=Cyan>,</font> conop    <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Cyan>,</font>Bold<font color=Red>]</font>
+<a name="line-31"></a>  <font color=Cyan>,</font> varop    <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>
+<a name="line-32"></a>  <font color=Cyan>,</font> string   <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>
+<a name="line-33"></a>  <font color=Cyan>,</font> char     <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>
+<a name="line-34"></a>  <font color=Cyan>,</font> number   <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>
+<a name="line-35"></a>  <font color=Cyan>,</font> cpp      <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Cyan>,</font>Dim<font color=Red>]</font>
+<a name="line-36"></a>  <font color=Cyan>,</font> selection <font color=Red>=</font> <font color=Red>[</font>Bold<font color=Cyan>,</font> Foreground Magenta<font color=Red>]</font>
+<a name="line-37"></a>  <font color=Cyan>,</font> variantselection <font color=Red>=</font> <font color=Red>[</font>Dim<font color=Cyan>,</font> Foreground Red<font color=Cyan>,</font> Underscore<font color=Red>]</font>
+<a name="line-38"></a>  <font color=Cyan>,</font> definition <font color=Red>=</font> <font color=Red>[</font>Foreground Blue<font color=Red>]</font>
+<a name="line-39"></a>  <font color=Cyan>}</font>
+<a name="line-40"></a>
+<a name="line-41"></a><a name="parseColourPrefs"></a><font color=Blue>-- NOTE, should we give a warning message on a failed reading?</font>
+<a name="line-42"></a>parseColourPrefs <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> IO ColourPrefs
+<a name="line-43"></a>parseColourPrefs file x <font color=Red>=</font>
+<a name="line-44"></a>    <u><font color=Green>case</font></u> reads x <u><font color=Green>of</font></u>
+<a name="line-45"></a>        <font color=Cyan>(</font>res<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u> <font color=Red>-&gt;</font> return res
+<a name="line-46"></a>        <u><font color=Green>_</font></u> <font color=Red>-&gt;</font> <u><font color=Green>do</font></u> hPutStrLn stderr <font color=Cyan>(</font><font color=Magenta>"Could not parse colour prefs from "</font><font color=Cyan>++</font>file
+<a name="line-47"></a>                                  <font color=Cyan>++</font><font color=Magenta>": reverting to defaults"</font><font color=Cyan>)</font>
+<a name="line-48"></a>                return defaultColourPrefs
+<a name="line-49"></a>
+<a name="line-50"></a><a name="readColourPrefs"></a><font color=Blue>-- | Read colour preferences from .hscolour file in the current directory, or failing that,</font>
+<a name="line-51"></a><font color=Blue>--   from \$HOME\/.hscolour, and failing that, returns a default set of prefs.</font>
+<a name="line-52"></a>readColourPrefs <font color=Red>::</font> IO ColourPrefs
+<a name="line-53"></a>readColourPrefs <font color=Red>=</font> catch
+<a name="line-54"></a>  <font color=Cyan>(</font><u><font color=Green>do</font></u> val <font color=Red>&lt;-</font> readFile <font color=Magenta>".hscolour"</font>
+<a name="line-55"></a>      parseColourPrefs <font color=Magenta>".hscolour"</font> val<font color=Cyan>)</font>
+<a name="line-56"></a>  <font color=Cyan>(</font><font color=Red>\</font><u><font color=Green>_</font></u><font color=Red>-&gt;</font> catch
+<a name="line-57"></a>    <font color=Cyan>(</font><u><font color=Green>do</font></u> home <font color=Red>&lt;-</font> getEnv <font color=Magenta>"HOME"</font>
+<a name="line-58"></a>        val <font color=Red>&lt;-</font> readFile <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font>
+<a name="line-59"></a>        parseColourPrefs <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font> val<font color=Cyan>)</font>
+<a name="line-60"></a>    <font color=Cyan>(</font><font color=Red>\</font><u><font color=Green>_</font></u><font color=Red>-&gt;</font> return defaultColourPrefs<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-61"></a>
+<a name="line-62"></a><a name="colourise"></a><font color=Blue>-- | Convert token classification to colour highlights.</font>
+<a name="line-63"></a>colourise <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> TokenType <font color=Red>-&gt;</font> <font color=Red>[</font>Highlight<font color=Red>]</font>
+<a name="line-64"></a>colourise pref Space    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>
+<a name="line-65"></a>colourise pref Comment  <font color=Red>=</font> comment pref
+<a name="line-66"></a>colourise pref Keyword  <font color=Red>=</font> keyword pref
+<a name="line-67"></a>colourise pref Keyglyph <font color=Red>=</font> keyglyph pref
+<a name="line-68"></a>colourise pref Layout   <font color=Red>=</font> layout pref
+<a name="line-69"></a>colourise pref Conid    <font color=Red>=</font> conid pref
+<a name="line-70"></a>colourise pref Varid    <font color=Red>=</font> varid pref
+<a name="line-71"></a>colourise pref Conop    <font color=Red>=</font> conop pref
+<a name="line-72"></a>colourise pref Varop    <font color=Red>=</font> varop pref
+<a name="line-73"></a>colourise pref String   <font color=Red>=</font> string pref
+<a name="line-74"></a>colourise pref Char     <font color=Red>=</font> char pref
+<a name="line-75"></a>colourise pref Number   <font color=Red>=</font> number pref
+<a name="line-76"></a>colourise pref Cpp      <font color=Red>=</font> cpp pref
+<a name="line-77"></a>colourise pref Error    <font color=Red>=</font> selection pref
+<a name="line-78"></a>colourise pref Definition <font color=Red>=</font> definition pref
+<a name="line-79"></a>
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/General.html b/docs/hscolour/Language/Haskell/HsColour/General.html
new file mode 100644
--- /dev/null
+++ b/docs/hscolour/Language/Haskell/HsColour/General.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/General.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a>
+<a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>General<font color=Cyan>(</font>
+<a name="line-3"></a>    dropLast<font color=Cyan>,</font> dropFirst
+<a name="line-4"></a>    <font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-5"></a>
+<a name="line-6"></a>
+<a name="line-7"></a><a name="dropLast"></a>dropLast <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font>
+<a name="line-8"></a>dropLast x <font color=Red>[</font>y<font color=Red>]</font> <font color=Red>|</font> x <font color=Cyan>==</font> y <font color=Red>=</font> []
+<a name="line-9"></a>dropLast x <font color=Cyan>(</font>y<b><font color=Red>:</font></b>ys<font color=Cyan>)</font> <font color=Red>=</font> y <b><font color=Red>:</font></b> dropLast x ys
+<a name="line-10"></a>dropLast x [] <font color=Red>=</font> []
+<a name="line-11"></a>
+<a name="line-12"></a>
+<a name="line-13"></a><a name="dropFirst"></a>dropFirst <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font>
+<a name="line-14"></a>dropFirst x <font color=Cyan>(</font>y<b><font color=Red>:</font></b>ys<font color=Cyan>)</font> <font color=Red>|</font> x <font color=Cyan>==</font> y <font color=Red>=</font> ys
+<a name="line-15"></a>dropFirst x ys <font color=Red>=</font> ys
+</pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/HTML.html b/docs/hscolour/Language/Haskell/HsColour/HTML.html
--- a/docs/hscolour/Language/Haskell/HsColour/HTML.html
+++ b/docs/hscolour/Language/Haskell/HsColour/HTML.html
@@ -1,69 +1,102 @@
-<pre><font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font>
-<u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML 
-    <font color=Cyan>(</font>hscolour<font color=Cyan>,</font> 
-     <font color=Blue>-- * Internals</font>
-     renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font> escape<font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
-
-<u><font color=Green>import</font></u> Data<font color=Cyan>.</font>Char<font color=Cyan>(</font>isAlphaNum<font color=Cyan>)</font>
-
-
-<font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font>
-hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>
-         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors</font>
-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>
-<a name="hscolour"></a>hscolour pref anchor <font color=Red>=</font> 
-    top'n'tail <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor <u><font color=Green>then</font></u> concatMap <font color=Cyan>(</font>renderAnchors <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font><font color=Cyan>)</font> 
-                                   <font color=Cyan>.</font> insertAnchors
-                            <u><font color=Green>else</font></u> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>.</font> tokenise
-
-top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String
-<a name="top'n'tail"></a>top'n'tail <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"&lt;pre&gt;"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"&lt;/pre&gt;"</font><font color=Cyan>)</font>
-
-renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
-<a name="renderToken"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> fontify <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font>
-                         <font color=Cyan>(</font><u><font color=Green>if</font></u> t <font color=Cyan>==</font> Comment <u><font color=Green>then</font></u> renderComment s <u><font color=Green>else</font></u> escape s<font color=Cyan>)</font>
-
-renderAnchors <font color=Red>::</font> <font color=Cyan>(</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>-&gt;</font>String<font color=Cyan>)</font>
-                 <font color=Red>-&gt;</font> Either String <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
-<a name="renderAnchors"></a>renderAnchors <u><font color=Green>_</font></u>      <font color=Cyan>(</font>Left v<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&lt;a name=\""</font><font color=Cyan>++</font>v<font color=Cyan>++</font><font color=Magenta>"\"&gt;&lt;/a&gt;"</font>
-renderAnchors render <font color=Cyan>(</font>Right r<font color=Cyan>)</font> <font color=Red>=</font> render r
-
-<font color=Blue>-- if there are http://links/ in a comment, turn them into</font>
-<font color=Blue>-- hyperlinks</font>
-renderComment <font color=Red>::</font> String <font color=Red>-&gt;</font> String
-<a name="renderComment"></a>renderComment xs<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'h'</font><b><font color=Red>:</font></b><font color=Magenta>'t'</font><b><font color=Red>:</font></b><font color=Magenta>'t'</font><b><font color=Red>:</font></b><font color=Magenta>'p'</font><b><font color=Red>:</font></b><font color=Magenta>':'</font><b><font color=Red>:</font></b><font color=Magenta>'/'</font><b><font color=Red>:</font></b><font color=Magenta>'/'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font>
-        renderLink a <font color=Cyan>++</font> renderComment b
-    <u><font color=Green>where</font></u>
-        <font color=Blue>-- see http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters</font>
-        isUrlChar x <font color=Red>=</font> isAlphaNum x <font color=Cyan>||</font> x <font color=Cyan>`elem`</font> <font color=Magenta>":/?#[]@!$&amp;'()*+,;=-._~%"</font>
-        <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> span isUrlChar xs
-        renderLink link <font color=Red>=</font> <font color=Magenta>"&lt;a href=\""</font> <font color=Cyan>++</font> link <font color=Cyan>++</font> <font color=Magenta>"\"&gt;"</font> <font color=Cyan>++</font> escape link <font color=Cyan>++</font> <font color=Magenta>"&lt;/a&gt;"</font>
-        
-renderComment <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> escape <font color=Red>[</font>x<font color=Red>]</font> <font color=Cyan>++</font> renderComment xs
-renderComment <font color=Red>[</font><font color=Red>]</font> <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>
-
-<font color=Blue>-- Html stuff</font>
-<a name="fontify"></a>fontify <font color=Red>[</font><font color=Red>]</font> s     <font color=Red>=</font> s
-fontify <font color=Cyan>(</font>h<b><font color=Red>:</font></b>hs<font color=Cyan>)</font> s <font color=Red>=</font> font h <font color=Cyan>(</font>fontify hs s<font color=Cyan>)</font>
-
-<a name="font"></a>font Normal         s <font color=Red>=</font> s
-font Bold           s <font color=Red>=</font> <font color=Magenta>"&lt;b&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/b&gt;"</font>
-font Dim            s <font color=Red>=</font> <font color=Magenta>"&lt;em&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/em&gt;"</font>
-font Underscore     s <font color=Red>=</font> <font color=Magenta>"&lt;u&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/u&gt;"</font>
-font Blink          s <font color=Red>=</font> <font color=Magenta>"&lt;blink&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/blink&gt;"</font>
-font ReverseVideo   s <font color=Red>=</font> s
-font Concealed      s <font color=Red>=</font> s
-font <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"&lt;font color="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/font&gt;"</font>
-font <font color=Cyan>(</font>Background c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"&lt;font bgcolor="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/font&gt;"</font>
-
-<a name="escape"></a>escape <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;lt;"</font><font color=Cyan>++</font>escape cs
-escape <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;gt;"</font><font color=Cyan>++</font>escape cs
-escape <font color=Cyan>(</font><font color=Magenta>'&amp;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;amp;"</font><font color=Cyan>++</font>escape cs
-escape <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>)</font>   <font color=Red>=</font> c<b><font color=Red>:</font></b> escape cs
-escape <font color=Red>[</font><font color=Red>]</font>       <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/HTML.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font>
+<a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML 
+<a name="line-3"></a>    <font color=Cyan>(</font>hscolour<font color=Cyan>,</font> 
+<a name="line-4"></a>     <font color=Blue>-- * Internals</font>
+<a name="line-5"></a>     renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font> renderNewLinesAnchors<font color=Cyan>,</font> escape<font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-6"></a>
+<a name="line-7"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors
+<a name="line-8"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify
+<a name="line-9"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
+<a name="line-10"></a>
+<a name="line-11"></a><u><font color=Green>import</font></u> Data<font color=Cyan>.</font>Char<font color=Cyan>(</font>isAlphaNum<font color=Cyan>)</font>
+<a name="line-12"></a>
+<a name="line-13"></a>
+<a name="line-14"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font>
+<a name="line-15"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>
+<a name="line-16"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors.</font>
+<a name="line-17"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether output should be partial.</font>
+<a name="line-18"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Title for webpage output.</font>
+<a name="line-19"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
+<a name="line-20"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>
+<a name="line-21"></a>hscolour pref anchor partial title <font color=Red>=</font> 
+<a name="line-22"></a>    <font color=Cyan>(</font><u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail title<font color=Cyan>)</font>
+<a name="line-23"></a>    <font color=Cyan>.</font> pre
+<a name="line-24"></a>    <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor <u><font color=Green>then</font></u> renderNewLinesAnchors
+<a name="line-25"></a>                      <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderAnchors <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-26"></a>                      <font color=Cyan>.</font> insertAnchors
+<a name="line-27"></a>                 <u><font color=Green>else</font></u> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-28"></a>    <font color=Cyan>.</font> tokenise
+<a name="line-29"></a>
+<a name="line-30"></a><a name="top'n'tail"></a>top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
+<a name="line-31"></a>top'n'tail title <font color=Red>=</font> <font color=Cyan>(</font>htmlHeader title <font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>htmlClose<font color=Cyan>)</font>
+<a name="line-32"></a>
+<a name="line-33"></a><a name="pre"></a>pre <font color=Red>::</font> String <font color=Red>-&gt;</font> String
+<a name="line-34"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"&lt;pre&gt;"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"&lt;/pre&gt;"</font><font color=Cyan>)</font>
+<a name="line-35"></a>
+<a name="line-36"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
+<a name="line-37"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> fontify <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font>
+<a name="line-38"></a>                         <font color=Cyan>(</font><u><font color=Green>if</font></u> t <font color=Cyan>==</font> Comment <u><font color=Green>then</font></u> renderComment s <u><font color=Green>else</font></u> escape s<font color=Cyan>)</font>
+<a name="line-39"></a>
+<a name="line-40"></a><a name="renderAnchors"></a>renderAnchors <font color=Red>::</font> <font color=Cyan>(</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>-&gt;</font>String<font color=Cyan>)</font>
+<a name="line-41"></a>                 <font color=Red>-&gt;</font> Either String <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
+<a name="line-42"></a>renderAnchors <u><font color=Green>_</font></u>      <font color=Cyan>(</font>Left v<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&lt;a name=\""</font><font color=Cyan>++</font>v<font color=Cyan>++</font><font color=Magenta>"\"&gt;&lt;/a&gt;"</font>
+<a name="line-43"></a>renderAnchors render <font color=Cyan>(</font>Right r<font color=Cyan>)</font> <font color=Red>=</font> render r
+<a name="line-44"></a>
+<a name="line-45"></a><a name="renderComment"></a><font color=Blue>-- if there are <a href="http://links/">http://links/</a> in a comment, turn them into</font>
+<a name="line-46"></a><font color=Blue>-- hyperlinks</font>
+<a name="line-47"></a>renderComment <font color=Red>::</font> String <font color=Red>-&gt;</font> String
+<a name="line-48"></a>renderComment xs<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'h'</font><b><font color=Red>:</font></b><font color=Magenta>'t'</font><b><font color=Red>:</font></b><font color=Magenta>'t'</font><b><font color=Red>:</font></b><font color=Magenta>'p'</font><b><font color=Red>:</font></b><font color=Magenta>':'</font><b><font color=Red>:</font></b><font color=Magenta>'/'</font><b><font color=Red>:</font></b><font color=Magenta>'/'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-49"></a>        renderLink a <font color=Cyan>++</font> renderComment b
+<a name="line-50"></a>    <u><font color=Green>where</font></u>
+<a name="line-51"></a>        <font color=Blue>-- see <a href="http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters">http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters</a></font>
+<a name="line-52"></a>        isUrlChar x <font color=Red>=</font> isAlphaNum x <font color=Cyan>||</font> x <font color=Cyan>`elem`</font> <font color=Magenta>":/?#[]@!$&amp;'()*+,;=-._~%"</font>
+<a name="line-53"></a>        <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> span isUrlChar xs
+<a name="line-54"></a>        renderLink link <font color=Red>=</font> <font color=Magenta>"&lt;a href=\""</font> <font color=Cyan>++</font> link <font color=Cyan>++</font> <font color=Magenta>"\"&gt;"</font> <font color=Cyan>++</font> escape link <font color=Cyan>++</font> <font color=Magenta>"&lt;/a&gt;"</font>
+<a name="line-55"></a>        
+<a name="line-56"></a>renderComment <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> escape <font color=Red>[</font>x<font color=Red>]</font> <font color=Cyan>++</font> renderComment xs
+<a name="line-57"></a>renderComment [] <font color=Red>=</font> []
+<a name="line-58"></a>
+<a name="line-59"></a><a name="renderNewLinesAnchors"></a>renderNewLinesAnchors <font color=Red>::</font> String <font color=Red>-&gt;</font> String
+<a name="line-60"></a>renderNewLinesAnchors <font color=Red>=</font> unlines <font color=Cyan>.</font> map render <font color=Cyan>.</font> zip <font color=Red>[</font><font color=Magenta>1</font><font color=Red>..</font><font color=Red>]</font> <font color=Cyan>.</font> lines
+<a name="line-61"></a>    <u><font color=Green>where</font></u> render <font color=Cyan>(</font>line<font color=Cyan>,</font> s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&lt;a name=\"line-"</font> <font color=Cyan>++</font> show line <font color=Cyan>++</font> <font color=Magenta>"\"&gt;&lt;/a&gt;"</font> <font color=Cyan>++</font> s
+<a name="line-62"></a>
+<a name="line-63"></a><a name="fontify"></a><font color=Blue>-- Html stuff</font>
+<a name="line-64"></a>fontify [] s     <font color=Red>=</font> s
+<a name="line-65"></a>fontify <font color=Cyan>(</font>h<b><font color=Red>:</font></b>hs<font color=Cyan>)</font> s <font color=Red>=</font> font h <font color=Cyan>(</font>fontify hs s<font color=Cyan>)</font>
+<a name="line-66"></a>
+<a name="line-67"></a><a name="font"></a>font Normal         s <font color=Red>=</font> s
+<a name="line-68"></a>font Bold           s <font color=Red>=</font> <font color=Magenta>"&lt;b&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/b&gt;"</font>
+<a name="line-69"></a>font Dim            s <font color=Red>=</font> <font color=Magenta>"&lt;em&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/em&gt;"</font>
+<a name="line-70"></a>font Underscore     s <font color=Red>=</font> <font color=Magenta>"&lt;u&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/u&gt;"</font>
+<a name="line-71"></a>font Blink          s <font color=Red>=</font> <font color=Magenta>"&lt;blink&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/blink&gt;"</font>
+<a name="line-72"></a>font ReverseVideo   s <font color=Red>=</font> s
+<a name="line-73"></a>font Concealed      s <font color=Red>=</font> s
+<a name="line-74"></a>font <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"&lt;font color="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/font&gt;"</font>
+<a name="line-75"></a>font <font color=Cyan>(</font>Background c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"&lt;font bgcolor="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/font&gt;"</font>
+<a name="line-76"></a>
+<a name="line-77"></a><a name="escape"></a>escape <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;lt;"</font><font color=Cyan>++</font>escape cs
+<a name="line-78"></a>escape <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;gt;"</font><font color=Cyan>++</font>escape cs
+<a name="line-79"></a>escape <font color=Cyan>(</font><font color=Magenta>'&amp;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;amp;"</font><font color=Cyan>++</font>escape cs
+<a name="line-80"></a>escape <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>)</font>   <font color=Red>=</font> c<b><font color=Red>:</font></b> escape cs
+<a name="line-81"></a>escape []       <font color=Red>=</font> []
+<a name="line-82"></a>
+<a name="line-83"></a><a name="htmlHeader"></a>htmlHeader title <font color=Red>=</font> unlines
+<a name="line-84"></a>  <font color=Red>[</font> <font color=Magenta>"&lt;!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\"&gt;"</font>
+<a name="line-85"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;html&gt;"</font>
+<a name="line-86"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;head&gt;"</font>
+<a name="line-87"></a>  <font color=Cyan>,</font><font color=Magenta>"&lt;!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ --&gt;"</font>
+<a name="line-88"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;title&gt;"</font><font color=Cyan>++</font>title<font color=Cyan>++</font><font color=Magenta>"&lt;/title&gt;"</font>
+<a name="line-89"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;/head&gt;"</font>
+<a name="line-90"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;body&gt;"</font>
+<a name="line-91"></a>  <font color=Red>]</font>
+<a name="line-92"></a><a name="htmlClose"></a>htmlClose  <font color=Red>=</font> <font color=Magenta>"\n&lt;/body&gt;\n&lt;/html&gt;"</font>
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/LaTeX.html b/docs/hscolour/Language/Haskell/HsColour/LaTeX.html
--- a/docs/hscolour/Language/Haskell/HsColour/LaTeX.html
+++ b/docs/hscolour/Language/Haskell/HsColour/LaTeX.html
@@ -1,112 +1,119 @@
-<pre><font color=Blue>-- | Formats Haskell source code using LaTeX macros.</font>
-<u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>LaTeX <font color=Cyan>(</font>hscolour<font color=Cyan>,</font> hscolourFragment<font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
-
-<font color=Blue>-- | Formats Haskell source code as a complete LaTeX document.</font>
-hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>
-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ An LaTeX document containing the coloured </font>
-                        <font color=Blue>--   Haskell source code.</font>
-<a name="hscolour"></a>hscolour pref <font color=Red>=</font> top'n'tail <font color=Cyan>.</font> hscolourFragment pref
-
-<font color=Blue>-- | Formats Haskell source code as an LaTeX fragment.</font>
-hscolourFragment <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>
-                 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Haskell source code.</font>
-                 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ An LaTeX fragment containing the coloured </font>
-                           <font color=Blue>--   Haskell source code.</font>
-<a name="hscolourFragment"></a>hscolourFragment pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise
-
-top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String
-<a name="top'n'tail"></a>top'n'tail  <font color=Red>=</font> <font color=Cyan>(</font>latexPrefix<font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>latexSuffix<font color=Cyan>)</font>
-
-<font color=Blue>-- | Wrap each lexeme in the appropriate LaTeX macro.</font>
-<font color=Blue>--   TODO: filter dangerous characters like "{}_$"</font>
-renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
-<a name="renderToken"></a>renderToken pref <font color=Cyan>(</font>Space<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font> filterSpace text
-renderToken pref <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font>   <font color=Red>=</font> <u><font color=Green>let</font></u> 
-	symb <font color=Red>=</font> <u><font color=Green>case</font></u> cls <u><font color=Green>of</font></u>
-		String <font color=Red>-&gt;</font> <font color=Magenta>"``"</font> <font color=Cyan>++</font> <font color=Cyan>(</font>reverse <font color=Cyan>.</font> tail <font color=Cyan>.</font> reverse <font color=Cyan>.</font> tail <font color=Cyan>$</font> text<font color=Cyan>)</font> <font color=Cyan>++</font> <font color=Magenta>"''"</font>
-		<u><font color=Green>_</font></u>      <font color=Red>-&gt;</font> text
-	style <font color=Red>=</font> colourise pref cls
-	<font color=Cyan>(</font>pre<font color=Cyan>,</font> post<font color=Cyan>)</font> <font color=Red>=</font> unzip <font color=Cyan>$</font> map latexHighlight style <u><font color=Green>in</font></u>
-	<font color=Cyan>(</font>concat pre<font color=Cyan>)</font> <font color=Cyan>++</font> filterSpecial symb <font color=Cyan>++</font> <font color=Cyan>(</font>concat post<font color=Cyan>)</font> 
-
-<font color=Blue>-- | Filter white space characters.</font>
-filterSpace <font color=Red>::</font> String
-            <font color=Red>-&gt;</font> String
-<a name="filterSpace"></a>filterSpace <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>
-filterSpace <font color=Cyan>(</font><font color=Magenta>' '</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\hsspace "</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>
-filterSpace <font color=Cyan>(</font><font color=Magenta>'\t'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\\hstab "</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>
-filterSpace <font color=Cyan>(</font>c<b><font color=Red>:</font></b>ss<font color=Cyan>)</font>    <font color=Red>=</font> c<b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>
-filterSpace <font color=Red>[</font><font color=Red>]</font>        <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>
-
-<font color=Blue>-- | Filters the characters "#$%&amp;~_^\{}</font><font color=Magenta>" which are special
---   in LaTeX.
-filterSpecial :: String  -- ^ The string to filter. 
-              -&gt; String  -- ^ The LaTeX-safe string.
-filterSpecial ('#':cs)  = '\\':'#':(filterSpecial cs)
-filterSpecial ('$':cs)  = '\\':'$':(filterSpecial cs)
-filterSpecial ('%':cs)  = '\\':'%':(filterSpecial cs)
-filterSpecial ('&amp;':cs)  = '\\':'&amp;':(filterSpecial cs)
-filterSpecial ('~':cs)  = "</font><font color=Cyan>\\</font>tilde<font color=Cyan>{</font> <font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)
-filterSpecial ('_':cs)  = '\\':'_':(filterSpecial cs)
-filterSpecial ('^':cs)  = "</font><font color=Cyan>\\</font>hat<font color=Cyan>{</font> <font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)
-filterSpecial ('\\':cs) = "</font><font color=Cyan>$\\</font>backslash<font color=Cyan>$</font><font color=Magenta>"++(filterSpecial cs)
-filterSpecial ('{':cs)  = '\\':'{':(filterSpecial cs)
-filterSpecial ('}':cs)  = '\\':'}':(filterSpecial cs)
-filterSpecial ('|':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Red>|</font><font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)
-filterSpecial ('&lt;':'-':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Cyan>\\</font>leftarrow<font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)
-filterSpecial ('&lt;':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Cyan>\\</font>langle<font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)
-filterSpecial ('-':'&gt;':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Cyan>\\</font>rightarrow<font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)
-filterSpecial ('&gt;':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Cyan>\\</font>rangle<font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)
-filterSpecial (c:cs)    = c:(filterSpecial cs)
-filterSpecial []        = []
-
-
--- | Constructs the appropriate LaTeX macro for the given style.
-latexHighlight :: Highlight -&gt; (String, String)
-latexHighlight Normal         = ("</font><font color=Cyan>{</font><font color=Cyan>\\</font>rm<font color=Cyan>{</font><font color=Cyan>}</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")
-latexHighlight Bold           = ("</font><font color=Cyan>{</font><font color=Cyan>\\</font>bf<font color=Cyan>{</font><font color=Cyan>}</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")
-latexHighlight Dim            = ("</font><font color=Magenta>", "</font><font color=Magenta>")
-latexHighlight Underscore     = ("</font><font color=Cyan>\\</font>underline<font color=Cyan>{</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")
-latexHighlight Blink          = ("</font><font color=Magenta>", "</font><font color=Magenta>")
-latexHighlight ReverseVideo   = ("</font><font color=Magenta>", "</font><font color=Magenta>")
-latexHighlight Concealed      = ("</font><font color=Cyan>\\</font>conceal<font color=Cyan>{</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")
-latexHighlight (Foreground c) = ("</font><font color=Cyan>\\</font>textcolor<font color=Cyan>{</font><font color=Magenta>"++ latexColour c ++"</font><font color=Cyan>}</font><font color=Cyan>{</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")
-latexHighlight (Background c) = ("</font><font color=Cyan>\\</font>colorbox<font color=Cyan>{</font><font color=Magenta>"++ latexColour c ++"</font><font color=Cyan>}</font><font color=Cyan>{</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")
-
--- | Translate a 'Colour' into a LaTeX colour name.
-latexColour :: Colour -&gt; String
-latexColour Black   = "</font>black<font color=Magenta>"
-latexColour Red     = "</font>red<font color=Magenta>"
-latexColour Green   = "</font>green<font color=Magenta>"
-latexColour Yellow  = "</font>yellow<font color=Magenta>"
-latexColour Blue    = "</font>blue<font color=Magenta>"
-latexColour Magenta = "</font>magenta<font color=Magenta>"
-latexColour Cyan    = "</font>cyan<font color=Magenta>"
-latexColour White   = "</font>white<font color=Magenta>"
-
--- | Generic LaTeX document preamble.
-latexPrefix = unlines
-    ["</font><font color=Cyan>\\</font>documentclass<font color=Red>[</font>a4paper<font color=Cyan>,</font> <font color=Magenta>12</font>pt<font color=Red>]</font><font color=Cyan>{</font>article<font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>usepackage<font color=Red>[</font>usenames<font color=Red>]</font><font color=Cyan>{</font>color<font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>usepackage<font color=Cyan>{</font>hyperref<font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>newsavebox<font color=Cyan>{</font><font color=Cyan>\\</font>spaceb<font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>newsavebox<font color=Cyan>{</font><font color=Cyan>\\</font>tabb<font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>savebox<font color=Cyan>{</font><font color=Cyan>\\</font>spaceb<font color=Cyan>}</font><font color=Red>[</font><font color=Magenta>1</font>ex<font color=Red>]</font><font color=Cyan>{</font><font color=Red>~</font><font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>savebox<font color=Cyan>{</font><font color=Cyan>\\</font>tabb<font color=Cyan>}</font><font color=Red>[</font><font color=Magenta>4</font>ex<font color=Red>]</font><font color=Cyan>{</font><font color=Red>~</font><font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>newcommand<font color=Cyan>{</font><font color=Cyan>\\</font>hsspace<font color=Cyan>}</font><font color=Cyan>{</font><font color=Cyan>\\</font>usebox<font color=Cyan>{</font><font color=Cyan>\\</font>spaceb<font color=Cyan>}</font><font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>newcommand<font color=Cyan>{</font><font color=Cyan>\\</font>hstab<font color=Cyan>}</font><font color=Cyan>{</font><font color=Cyan>\\</font>usebox<font color=Cyan>{</font><font color=Cyan>\\</font>tabb<font color=Cyan>}</font><font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>newcommand<font color=Cyan>{</font><font color=Cyan>\\</font>conceal<font color=Cyan>}</font><font color=Red>[</font><font color=Magenta>1</font><font color=Red>]</font><font color=Cyan>{</font><font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>begin<font color=Cyan>{</font>document<font color=Cyan>}</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>noindent<font color=Magenta>"
-    ]
-
--- | Generic LaTeX document postamble.
-latexSuffix = unlines
-    ["</font><font color=Magenta>"
-    ,"</font><font color=Cyan>\\</font>end<font color=Cyan>{</font>document<font color=Cyan>}</font><font color=Magenta>"</font>
-    <font color=Red>]</font>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/LaTeX.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code using LaTeX macros.</font>
+<a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>LaTeX <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-3"></a>
+<a name="line-4"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify
+<a name="line-5"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
+<a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>General
+<a name="line-7"></a>
+<a name="line-8"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code as a complete LaTeX document.</font>
+<a name="line-9"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>
+<a name="line-10"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether output should be partial (= no prologue).</font>
+<a name="line-11"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
+<a name="line-12"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ A LaTeX document\/fragment containing the coloured </font>
+<a name="line-13"></a>                        <font color=Blue>--   Haskell source code.</font>
+<a name="line-14"></a>hscolour pref partial <font color=Red>=</font>
+<a name="line-15"></a>  <font color=Cyan>(</font> <u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail<font color=Cyan>)</font>
+<a name="line-16"></a>  <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font>
+<a name="line-17"></a>  <font color=Cyan>.</font> tokenise
+<a name="line-18"></a>
+<a name="line-19"></a><a name="top'n'tail"></a>top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String
+<a name="line-20"></a>top'n'tail  <font color=Red>=</font> <font color=Cyan>(</font>latexPrefix<font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>latexSuffix<font color=Cyan>)</font>
+<a name="line-21"></a>
+<a name="line-22"></a><a name="renderToken"></a><font color=Blue>-- | Wrap each lexeme in the appropriate LaTeX macro.</font>
+<a name="line-23"></a><font color=Blue>--   TODO: filter dangerous characters like "{}_$"</font>
+<a name="line-24"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
+<a name="line-25"></a>renderToken pref <font color=Cyan>(</font>Space<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font> filterSpace text
+<a name="line-26"></a>renderToken pref <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font>   <font color=Red>=</font>
+<a name="line-27"></a>  <u><font color=Green>let</font></u> symb <font color=Red>=</font> <u><font color=Green>case</font></u> cls <u><font color=Green>of</font></u>
+<a name="line-28"></a>              String <font color=Red>-&gt;</font> <font color=Magenta>"``"</font> <font color=Cyan>++</font> <font color=Cyan>(</font>dropFirst <font color=Magenta>'\"'</font> <font color=Cyan>$</font> dropLast <font color=Magenta>'\"'</font> <font color=Cyan>$</font> text<font color=Cyan>)</font> <font color=Cyan>++</font> <font color=Magenta>"''"</font>
+<a name="line-29"></a>              <u><font color=Green>_</font></u>      <font color=Red>-&gt;</font> text
+<a name="line-30"></a>      style <font color=Red>=</font> colourise pref cls
+<a name="line-31"></a>      <font color=Cyan>(</font>pre<font color=Cyan>,</font> post<font color=Cyan>)</font> <font color=Red>=</font> unzip <font color=Cyan>$</font> map latexHighlight style
+<a name="line-32"></a>  <u><font color=Green>in</font></u> concat pre <font color=Cyan>++</font> filterSpecial symb <font color=Cyan>++</font> concat post
+<a name="line-33"></a>
+<a name="line-34"></a><a name="filterSpace"></a><font color=Blue>-- | Filter white space characters.</font>
+<a name="line-35"></a>filterSpace <font color=Red>::</font> String
+<a name="line-36"></a>            <font color=Red>-&gt;</font> String
+<a name="line-37"></a>filterSpace <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>
+<a name="line-38"></a>filterSpace <font color=Cyan>(</font><font color=Magenta>' '</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\hsspace "</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>
+<a name="line-39"></a>filterSpace <font color=Cyan>(</font><font color=Magenta>'\t'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\\hstab "</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>
+<a name="line-40"></a>filterSpace <font color=Cyan>(</font>c<b><font color=Red>:</font></b>ss<font color=Cyan>)</font>    <font color=Red>=</font> c<b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>
+<a name="line-41"></a>filterSpace []        <font color=Red>=</font> []
+<a name="line-42"></a>
+<a name="line-43"></a><a name="filterSpecial"></a><font color=Blue>-- | Filters the characters "#$%&amp;~_^\{}" which are special</font>
+<a name="line-44"></a><font color=Blue>--   in LaTeX.</font>
+<a name="line-45"></a>filterSpecial <font color=Red>::</font> String  <font color=Blue>-- ^ The string to filter. </font>
+<a name="line-46"></a>              <font color=Red>-&gt;</font> String  <font color=Blue>-- ^ The LaTeX-safe string.</font>
+<a name="line-47"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'#'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'#'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-48"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'$'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'$'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-49"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'%'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'%'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-50"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'&amp;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'&amp;'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-51"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'~'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\tilde{ }"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-52"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'_'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'_'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-53"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'^'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\hat{ }}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-54"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'\\'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"$\\backslash$"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-55"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-56"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'}'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-57"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'|'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{|}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-58"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\leftarrow}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-59"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\langle}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-60"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\rightarrow}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-61"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\rangle}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-62"></a>filterSpecial <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>)</font>    <font color=Red>=</font> c<b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>
+<a name="line-63"></a>filterSpecial []        <font color=Red>=</font> []
+<a name="line-64"></a>
+<a name="line-65"></a>
+<a name="line-66"></a><a name="latexHighlight"></a><font color=Blue>-- | Constructs the appropriate LaTeX macro for the given style.</font>
+<a name="line-67"></a>latexHighlight <font color=Red>::</font> Highlight <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Cyan>,</font> String<font color=Cyan>)</font>
+<a name="line-68"></a>latexHighlight Normal         <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"{\\rm{}"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>
+<a name="line-69"></a>latexHighlight Bold           <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"{\\bf{}"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>
+<a name="line-70"></a>latexHighlight Dim            <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>""</font><font color=Cyan>,</font> <font color=Magenta>""</font><font color=Cyan>)</font>
+<a name="line-71"></a>latexHighlight Underscore     <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"\\underline{"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>
+<a name="line-72"></a>latexHighlight Blink          <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>""</font><font color=Cyan>,</font> <font color=Magenta>""</font><font color=Cyan>)</font>
+<a name="line-73"></a>latexHighlight ReverseVideo   <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>""</font><font color=Cyan>,</font> <font color=Magenta>""</font><font color=Cyan>)</font>
+<a name="line-74"></a>latexHighlight Concealed      <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"\\conceal{"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>
+<a name="line-75"></a>latexHighlight <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"\\textcolor{"</font><font color=Cyan>++</font> latexColour c <font color=Cyan>++</font><font color=Magenta>"}{"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>
+<a name="line-76"></a>latexHighlight <font color=Cyan>(</font>Background c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"\\colorbox{"</font><font color=Cyan>++</font> latexColour c <font color=Cyan>++</font><font color=Magenta>"}{"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>
+<a name="line-77"></a>
+<a name="line-78"></a><a name="latexColour"></a><font color=Blue>-- | Translate a 'Colour' into a LaTeX colour name.</font>
+<a name="line-79"></a>latexColour <font color=Red>::</font> Colour <font color=Red>-&gt;</font> String
+<a name="line-80"></a>latexColour Black   <font color=Red>=</font> <font color=Magenta>"black"</font>
+<a name="line-81"></a>latexColour Red     <font color=Red>=</font> <font color=Magenta>"red"</font>
+<a name="line-82"></a>latexColour Green   <font color=Red>=</font> <font color=Magenta>"green"</font>
+<a name="line-83"></a>latexColour Yellow  <font color=Red>=</font> <font color=Magenta>"yellow"</font>
+<a name="line-84"></a>latexColour Blue    <font color=Red>=</font> <font color=Magenta>"blue"</font>
+<a name="line-85"></a>latexColour Magenta <font color=Red>=</font> <font color=Magenta>"magenta"</font>
+<a name="line-86"></a>latexColour Cyan    <font color=Red>=</font> <font color=Magenta>"cyan"</font>
+<a name="line-87"></a>latexColour White   <font color=Red>=</font> <font color=Magenta>"white"</font>
+<a name="line-88"></a>
+<a name="line-89"></a><a name="latexPrefix"></a><font color=Blue>-- | Generic LaTeX document preamble.</font>
+<a name="line-90"></a>latexPrefix <font color=Red>=</font> unlines
+<a name="line-91"></a>    <font color=Red>[</font><font color=Magenta>"\\documentclass[a4paper, 12pt]{article}"</font>
+<a name="line-92"></a>    <font color=Cyan>,</font><font color=Magenta>"\\usepackage[usenames]{color}"</font>
+<a name="line-93"></a>    <font color=Cyan>,</font><font color=Magenta>"\\usepackage{hyperref}"</font>
+<a name="line-94"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newsavebox{\\spaceb}"</font>
+<a name="line-95"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newsavebox{\\tabb}"</font>
+<a name="line-96"></a>    <font color=Cyan>,</font><font color=Magenta>"\\savebox{\\spaceb}[1ex]{~}"</font>
+<a name="line-97"></a>    <font color=Cyan>,</font><font color=Magenta>"\\savebox{\\tabb}[4ex]{~}"</font>
+<a name="line-98"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\hsspace}{\\usebox{\\spaceb}}"</font>
+<a name="line-99"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\hstab}{\\usebox{\\tabb}}"</font>
+<a name="line-100"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\conceal}[1]{}"</font>
+<a name="line-101"></a>    <font color=Cyan>,</font><font color=Magenta>"\\begin{document}"</font>
+<a name="line-102"></a>    <font color=Cyan>,</font><font color=Magenta>"\\noindent"</font>
+<a name="line-103"></a>    <font color=Red>]</font>
+<a name="line-104"></a>
+<a name="line-105"></a><a name="latexSuffix"></a><font color=Blue>-- | Generic LaTeX document postamble.</font>
+<a name="line-106"></a>latexSuffix <font color=Red>=</font> unlines
+<a name="line-107"></a>    <font color=Red>[</font><font color=Magenta>""</font>
+<a name="line-108"></a>    <font color=Cyan>,</font><font color=Magenta>"\\end{document}"</font>
+<a name="line-109"></a>    <font color=Red>]</font>
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/MIRC.html b/docs/hscolour/Language/Haskell/HsColour/MIRC.html
new file mode 100644
--- /dev/null
+++ b/docs/hscolour/Language/Haskell/HsColour/MIRC.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/MIRC.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code using mIRC codes.</font>
+<a name="line-2"></a><font color=Blue>--   (see http:\/\/irssi.org\/documentation\/formats)</font>
+<a name="line-3"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>MIRC <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-4"></a>
+<a name="line-5"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify
+<a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
+<a name="line-7"></a>
+<a name="line-8"></a><u><font color=Green>import</font></u> Data<font color=Cyan>.</font>Char<font color=Cyan>(</font>isAlphaNum<font color=Cyan>)</font>
+<a name="line-9"></a>
+<a name="line-10"></a>
+<a name="line-11"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code using mIRC codes.</font>
+<a name="line-12"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>
+<a name="line-13"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
+<a name="line-14"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>
+<a name="line-15"></a>hscolour pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise
+<a name="line-16"></a>
+<a name="line-17"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
+<a name="line-18"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> fontify <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font> s
+<a name="line-19"></a>
+<a name="line-20"></a>
+<a name="line-21"></a><a name="fontify"></a><font color=Blue>-- mIRC stuff</font>
+<a name="line-22"></a>fontify hs <font color=Red>=</font>
+<a name="line-23"></a>    mircColours <font color=Cyan>(</font>joinColours hs<font color=Cyan>)</font>
+<a name="line-24"></a>    <font color=Cyan>.</font> highlight <font color=Cyan>(</font>filter <font color=Cyan>(</font><font color=Cyan>`elem`</font><font color=Red>[</font>Normal<font color=Cyan>,</font>Bold<font color=Cyan>,</font>Underscore<font color=Cyan>,</font>ReverseVideo<font color=Red>]</font><font color=Cyan>)</font> hs<font color=Cyan>)</font>
+<a name="line-25"></a>  <u><font color=Green>where</font></u>
+<a name="line-26"></a>    highlight [] s     <font color=Red>=</font> s
+<a name="line-27"></a>    highlight <font color=Cyan>(</font>h<b><font color=Red>:</font></b>hs<font color=Cyan>)</font> s <font color=Red>=</font> font h <font color=Cyan>(</font>highlight hs s<font color=Cyan>)</font>
+<a name="line-28"></a>
+<a name="line-29"></a>    font Normal         s <font color=Red>=</font> s
+<a name="line-30"></a>    font Bold           s <font color=Red>=</font> <font color=Magenta>'\^B'</font><b><font color=Red>:</font></b>s<font color=Cyan>++</font><font color=Magenta>"\^B"</font>
+<a name="line-31"></a>    font Underscore     s <font color=Red>=</font> <font color=Magenta>'\^_'</font><b><font color=Red>:</font></b>s<font color=Cyan>++</font><font color=Magenta>"\^_"</font>
+<a name="line-32"></a>    font ReverseVideo   s <font color=Red>=</font> <font color=Magenta>'\^V'</font><b><font color=Red>:</font></b>s<font color=Cyan>++</font><font color=Magenta>"\^V"</font>
+<a name="line-33"></a>
+<a name="line-34"></a><a name="MircColour"></a><font color=Blue>-- mIRC combines colour codes in a non-modular way</font>
+<a name="line-35"></a><a name="MircColour"></a><u><font color=Green>data</font></u> MircColour <font color=Red>=</font> Mirc <font color=Cyan>{</font> fg<font color=Red>::</font>Colour<font color=Cyan>,</font> dim<font color=Red>::</font>Bool<font color=Cyan>,</font> bg<font color=Red>::</font>Maybe Colour<font color=Cyan>,</font> blink<font color=Red>::</font>Bool<font color=Cyan>}</font>
+<a name="line-36"></a>
+<a name="line-37"></a><a name="joinColours"></a>joinColours <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font> <font color=Red>-&gt;</font> MircColour
+<a name="line-38"></a>joinColours <font color=Red>=</font> foldr join <font color=Cyan>(</font>Mirc <font color=Cyan>{</font>fg<font color=Red>=</font>Black<font color=Cyan>,</font> dim<font color=Red>=</font>False<font color=Cyan>,</font> bg<font color=Red>=</font>Nothing<font color=Cyan>,</font> blink<font color=Red>=</font>False<font color=Cyan>}</font><font color=Cyan>)</font>
+<a name="line-39"></a>  <u><font color=Green>where</font></u>
+<a name="line-40"></a>    join Blink           mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>blink<font color=Red>=</font>True<font color=Cyan>}</font>
+<a name="line-41"></a>    join Dim             mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>dim<font color=Red>=</font>True<font color=Cyan>}</font>
+<a name="line-42"></a>    join <font color=Cyan>(</font>Foreground fg<font color=Cyan>)</font> mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>fg<font color=Red>=</font>fg<font color=Cyan>}</font>
+<a name="line-43"></a>    join <font color=Cyan>(</font>Background bg<font color=Cyan>)</font> mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>bg<font color=Red>=</font>Just bg<font color=Cyan>}</font>
+<a name="line-44"></a>    join Concealed       mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>fg<font color=Red>=</font>Black<font color=Cyan>,</font> bg<font color=Red>=</font>Just Black<font color=Cyan>}</font>
+<a name="line-45"></a>    join <u><font color=Green>_</font></u>               mirc <font color=Red>=</font> mirc
+<a name="line-46"></a>
+<a name="line-47"></a><a name="mircColours"></a>mircColours <font color=Red>::</font> MircColour <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
+<a name="line-48"></a>mircColours <font color=Cyan>(</font>Mirc fg dim Nothing   blink<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>'\^C'</font><b><font color=Red>:</font></b> code fg dim<font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"\^O"</font>
+<a name="line-49"></a>mircColours <font color=Cyan>(</font>Mirc fg dim <font color=Cyan>(</font>Just bg<font color=Cyan>)</font> blink<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>'\^C'</font><b><font color=Red>:</font></b> code fg dim<font color=Cyan>++</font><font color=Magenta>','</font>
+<a name="line-50"></a>                                                   <b><font color=Red>:</font></b> code bg blink<font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"\^O"</font>
+<a name="line-51"></a>
+<a name="line-52"></a><a name="code"></a>code <font color=Red>::</font> Colour <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> String
+<a name="line-53"></a>code Black   False <font color=Red>=</font> <font color=Magenta>"1"</font>
+<a name="line-54"></a>code Red     False <font color=Red>=</font> <font color=Magenta>"5"</font>
+<a name="line-55"></a>code Green   False <font color=Red>=</font> <font color=Magenta>"3"</font>
+<a name="line-56"></a>code Yellow  False <font color=Red>=</font> <font color=Magenta>"7"</font>
+<a name="line-57"></a>code Blue    False <font color=Red>=</font> <font color=Magenta>"2"</font>
+<a name="line-58"></a>code Magenta False <font color=Red>=</font> <font color=Magenta>"6"</font>
+<a name="line-59"></a>code Cyan    False <font color=Red>=</font> <font color=Magenta>"10"</font>
+<a name="line-60"></a>code White   False <font color=Red>=</font> <font color=Magenta>"0"</font>
+<a name="line-61"></a>code Black   True  <font color=Red>=</font> <font color=Magenta>"14"</font>
+<a name="line-62"></a>code Red     True  <font color=Red>=</font> <font color=Magenta>"4"</font>
+<a name="line-63"></a>code Green   True  <font color=Red>=</font> <font color=Magenta>"9"</font>
+<a name="line-64"></a>code Yellow  True  <font color=Red>=</font> <font color=Magenta>"8"</font>
+<a name="line-65"></a>code Blue    True  <font color=Red>=</font> <font color=Magenta>"12"</font>
+<a name="line-66"></a>code Magenta True  <font color=Red>=</font> <font color=Magenta>"13"</font>
+<a name="line-67"></a>code Cyan    True  <font color=Red>=</font> <font color=Magenta>"11"</font>
+<a name="line-68"></a>code White   True  <font color=Red>=</font> <font color=Magenta>"15"</font>
+</pre>
+</body>
+</html>
diff --git a/docs/hscolour/Language/Haskell/HsColour/TTY.html b/docs/hscolour/Language/Haskell/HsColour/TTY.html
--- a/docs/hscolour/Language/Haskell/HsColour/TTY.html
+++ b/docs/hscolour/Language/Haskell/HsColour/TTY.html
@@ -1,16 +1,25 @@
-<pre><font color=Blue>-- | Highlights Haskell code with ANSI terminal codes.</font>
-<u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>TTY <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>
-
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ANSI <u><font color=Green>as</font></u> ANSI
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify
-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
-
-<font color=Blue>-- | Highlights Haskell code with ANSI terminal codes.</font>
-hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>
-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>
-<a name="hscolour"></a>hscolour pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise
-
-renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
-<a name="renderToken"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> ANSI<font color=Cyan>.</font>highlight <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font> s
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Language/Haskell/HsColour/TTY.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>-- | Highlights Haskell code with ANSI terminal codes.</font>
+<a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>TTY <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>
+<a name="line-3"></a>
+<a name="line-4"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ANSI <u><font color=Green>as</font></u> ANSI
+<a name="line-5"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify
+<a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise
+<a name="line-7"></a>
+<a name="line-8"></a><a name="hscolour"></a><font color=Blue>-- | Highlights Haskell code with ANSI terminal codes.</font>
+<a name="line-9"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>
+<a name="line-10"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>
+<a name="line-11"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>
+<a name="line-12"></a>hscolour pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise
+<a name="line-13"></a>
+<a name="line-14"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String
+<a name="line-15"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> ANSI<font color=Cyan>.</font>highlight <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font> s
 </pre>
+</body>
+</html>
diff --git a/docs/hscolour/doc-index-C.html b/docs/hscolour/doc-index-C.html
--- a/docs/hscolour/doc-index-C.html
+++ b/docs/hscolour/doc-index-C.html
@@ -211,6 +211,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>Cpp</TD
+><TD CLASS="indexlinks"
+><A HREF="Language-Haskell-HsColour-Classify.html#v%3ACpp"
+>Language.Haskell.HsColour.Classify</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >Cyan</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Language-Haskell-HsColour-ColourHighlight.html#v%3ACyan"
@@ -320,6 +328,16 @@
 ><A HREF="Language-Haskell-HsColour-Colourise.html#v%3Aconop"
 >Language.Haskell.HsColour.Colourise</A
 >, <A HREF="Language-Haskell-HsColour.html#v%3Aconop"
+>Language.Haskell.HsColour</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>cpp</TD
+><TD CLASS="indexlinks"
+><A HREF="Language-Haskell-HsColour-Colourise.html#v%3Acpp"
+>Language.Haskell.HsColour.Colourise</A
+>, <A HREF="Language-Haskell-HsColour.html#v%3Acpp"
 >Language.Haskell.HsColour</A
 ></TD
 ></TR
diff --git a/docs/hscolour/doc-index-D.html b/docs/hscolour/doc-index-D.html
--- a/docs/hscolour/doc-index-D.html
+++ b/docs/hscolour/doc-index-D.html
@@ -127,12 +127,46 @@
 ><TABLE CELLPADDING="0" CELLSPACING="5"
 ><TR
 ><TD CLASS="indexentry"
+>Definition</TD
+><TD CLASS="indexlinks"
+><A HREF="Language-Haskell-HsColour-Classify.html#v%3ADefinition"
+>Language.Haskell.HsColour.Classify</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >Dim</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Language-Haskell-HsColour-ColourHighlight.html#v%3ADim"
 >Language.Haskell.HsColour.ColourHighlight</A
 >, Language.Haskell.HsColour.Colourise, <A HREF="Language-Haskell-HsColour-ANSI.html#v%3ADim"
 >Language.Haskell.HsColour.ANSI</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>definition</TD
+><TD CLASS="indexlinks"
+><A HREF="Language-Haskell-HsColour-Colourise.html#v%3Adefinition"
+>Language.Haskell.HsColour.Colourise</A
+>, <A HREF="Language-Haskell-HsColour.html#v%3Adefinition"
+>Language.Haskell.HsColour</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>dropFirst</TD
+><TD CLASS="indexlinks"
+><A HREF="Language-Haskell-HsColour-General.html#v%3AdropFirst"
+>Language.Haskell.HsColour.General</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>dropLast</TD
+><TD CLASS="indexlinks"
+><A HREF="Language-Haskell-HsColour-General.html#v%3AdropLast"
+>Language.Haskell.HsColour.General</A
 ></TD
 ></TR
 ></TABLE
diff --git a/docs/hscolour/doc-index-H.html b/docs/hscolour/doc-index-H.html
--- a/docs/hscolour/doc-index-H.html
+++ b/docs/hscolour/doc-index-H.html
@@ -207,28 +207,16 @@
 ><TD CLASS="indexannot"
 >5 (Function)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Language-Haskell-HsColour-TTY.html#v%3Ahscolour"
->Language.Haskell.HsColour.TTY</A
-></TD
-></TR
-><TR
-><TD CLASS="indexentry" COLSPAN="2"
->hscolourFragment</TD
-></TR
-><TR
-><TD CLASS="indexannot"
->1 (Function)</TD
-><TD CLASS="indexlinks"
-><A HREF="Language-Haskell-HsColour-CSS.html#v%3AhscolourFragment"
->Language.Haskell.HsColour.CSS</A
+><A HREF="Language-Haskell-HsColour-MIRC.html#v%3Ahscolour"
+>Language.Haskell.HsColour.MIRC</A
 ></TD
 ></TR
 ><TR
 ><TD CLASS="indexannot"
->2 (Function)</TD
+>6 (Function)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Language-Haskell-HsColour-LaTeX.html#v%3AhscolourFragment"
->Language.Haskell.HsColour.LaTeX</A
+><A HREF="Language-Haskell-HsColour-TTY.html#v%3Ahscolour"
+>Language.Haskell.HsColour.TTY</A
 ></TD
 ></TR
 ></TABLE
diff --git a/docs/hscolour/doc-index-M.html b/docs/hscolour/doc-index-M.html
--- a/docs/hscolour/doc-index-M.html
+++ b/docs/hscolour/doc-index-M.html
@@ -127,6 +127,14 @@
 ><TABLE CELLPADDING="0" CELLSPACING="5"
 ><TR
 ><TD CLASS="indexentry"
+>MIRC</TD
+><TD CLASS="indexlinks"
+><A HREF="Language-Haskell-HsColour.html#v%3AMIRC"
+>Language.Haskell.HsColour</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >Magenta</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Language-Haskell-HsColour-ColourHighlight.html#v%3AMagenta"
diff --git a/docs/hscolour/doc-index-R.html b/docs/hscolour/doc-index-R.html
--- a/docs/hscolour/doc-index-R.html
+++ b/docs/hscolour/doc-index-R.html
@@ -171,6 +171,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>renderNewLinesAnchors</TD
+><TD CLASS="indexlinks"
+><A HREF="Language-Haskell-HsColour-HTML.html#v%3ArenderNewLinesAnchors"
+>Language.Haskell.HsColour.HTML</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >restorePosition</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Language-Haskell-HsColour-ANSI.html#v%3ArestorePosition"
diff --git a/docs/hscolour/index.html b/docs/hscolour/index.html
--- a/docs/hscolour/index.html
+++ b/docs/hscolour/index.html
@@ -139,6 +139,16 @@
 ></TR
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 44em"
+><A HREF="Language-Haskell-HsColour-General.html"
+>Language.Haskell.HsColour.General</A
+></TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
+><TD STYLE="padding-left: 1.25em;width: 44em"
 ><A HREF="Language-Haskell-HsColour-HTML.html"
 >Language.Haskell.HsColour.HTML</A
 ></TD
@@ -151,6 +161,16 @@
 ><TD STYLE="padding-left: 1.25em;width: 44em"
 ><A HREF="Language-Haskell-HsColour-LaTeX.html"
 >Language.Haskell.HsColour.LaTeX</A
+></TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
+><TD STYLE="padding-left: 1.25em;width: 44em"
+><A HREF="Language-Haskell-HsColour-MIRC.html"
+>Language.Haskell.HsColour.MIRC</A
 ></TD
 ><TD
 ></TD
diff --git a/hscolour.cabal b/hscolour.cabal
--- a/hscolour.cabal
+++ b/hscolour.cabal
@@ -1,5 +1,5 @@
 Name: hscolour
-Version: 1.9
+Version: 1.10
 Copyright: Malcolm Wallace, University of York, 2003-2007, Bjorn Bringert 2006
 Maintainer: Malcolm Wallace
 Author: Malcolm Wallace
@@ -11,8 +11,13 @@
 Synopsis: Colourise Haskell code.
 Description:
   hscolour is a small Haskell script to colourise Haskell code. It currently
-  has four output formats: 
-  ANSI terminal codes, HTML 3.2 with <font> tags, HTML 4.01 with CSS, and LaTeX.
+  has five output formats: 
+  ANSI terminal codes,
+  HTML 3.2 with <font> tags,
+  HTML 4.01 with CSS,
+  LaTeX,
+  and mIRC chat codes.
+Category: Language
 Exposed-Modules: 
   Language.Haskell.HsColour,
   Language.Haskell.HsColour.ANSI,
@@ -27,7 +32,8 @@
   Language.Haskell.HsColour.MIRC,
   Language.Haskell.HsColour.CSS
 data-files: hscolour.css
-ghc-options: -O -W
+--ghc-options: -O -W
+Build-Type: Simple
 
 Executable: HsColour
 Main-is: HsColour.hs
diff --git a/index.html b/index.html
--- a/index.html
+++ b/index.html
@@ -163,7 +163,7 @@
 
 <p>
 <h2>Copyright and licence</h2>
-<b>hscolour</b> is &copy; Malcolm Wallace 2003-2007.  It is distributed
+<b>hscolour</b> is &copy; Malcolm Wallace 2003-2008.  It is distributed
 under the Gnu GPL, which can be found in the file
 <a href="LICENCE-GPL">LICENCE-GPL</a>.
 
@@ -187,6 +187,7 @@
 <h2>History</h2>
 <p>
 <dl>
+<dt>1.10</dt><dd> the title of HTML output is now the filename</dd>
 <dt>1.9</dt><dd> added the -mirc and -lit options, and -print-css</dd>
 <dt>1.8</dt><dd> added highlights for cpp lines
                  <br>tuple constructors now treated as ConIds
@@ -203,7 +204,7 @@
 </dl>
 
 <p>
-This page last modified: 8th Jan 2008<br>
+This page last modified: 22nd July 2008<br>
 Malcolm Wallace<br>
 
 </td></tr></table>
