GHCi in colour
(added link to blog post with another approach)
(Added a note about \001..\002 for readline and an example.)
Revision as of 14:16, 29 March 2012
This page documents efforts to colourise GHCi output.
Or a type error:
Output like this would be the result of running, for example:
and would appear in the console/xterm as ansi terminal coloured output.
2.1 Using sed and ghci.conf
You can use sed to color the non-prompt output, and color the prompt with ghci.conf. This works better than piping into HsColour for me. See this blog post for details.
This allows you to colorize everything you can catch with a regexp. Note that when coloring GHCi prompt using ghci.conf one should, in ultimate escapity, escape the escape codes with \001..\002, otherwise readline will mess up when editing long lines. For a working example of how this can be done refer to this example. For what it can look like refer to this picture. This approach doesn't work well if you try to output an infinite sequence and then hit CTRL+C, ideas on how to fix that are welcome.
2.2 Using HsColour
An existing tool, HsColour, could be modified to operate interactively. In fact, HsColour is already interactive, and with a small patch added on 2006-12-14 to control ouput buffering better, this works relatively nicely:
ghci 2>&1 | HsColour -tty
There are small delays however, when lexing certain tokens, and the interaction with readline isn't ideal.
Neil Mitchell has a prototype gui haskell wrapper, based on gtk. Does this contain a reasonable ghci wrapper we could steal?
If you have an idea of how to do this nicely, add your proposal here.