HaskellWiki:Syntax highlighting

From HaskellWiki
Revision as of 13:06, 10 June 2006 by DavidHouse (talk | contribs) (Add link to GeSHi)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Syntax highlighting works for a bunch of languages including Haskell, using GeSHi and Jason Dagit's Haskell file, somewhat modified.

Block formatting with <haskell>

To highlight syntax of a block of Haskell, enclose it in <haskell>...</haskell>. This uses the <pre> element. For instance:

{-
My program
-}
import Prelude

foo :: (Monad m) -> m (Int,Int)
foo = (x-2,x - 1) where
  x = 3

-- The main function
main :: IO ()
main = do
  a <- foo
  putStr ("And the answer is: " ++(show (fst a))++"\n")

Inline formatting with <hask>

To highlight syntax of inline Haskell snippets, enclose the span in <hask>...</hask>. This uses the <code> element, which is inline. For instance: import Prelude.

Inline highlighting is a bit of a hack at the moment, and may be buggy.

Styles

For Haskell (only) I have deliberately removed all formatting apart from foreground colour, and those I have tried to keep dark so as not to be visually distracting.

This is what I am trying to achieve:

  • comments: grey
  • keywords (including symbols): blue
  • value literals: dark green
  • known value identifiers (including symbols): green
  • known type identifiers: red
  • known classes: purple
  • known modules: brown

I also indent the entire block by 2em. See MediaWiki:Common.css.

Ashley Y 10:49, 19 March 2006 (UTC)

Other languages

This works for certain other languages too. For lisp, for instance, use <pre-lisp>...</pre-lisp> to format a block of lisp, and <code-lisp>...</code-lisp> to format text inline. <haskell> is the same as <pre-haskell> and <hask> is the same as <code-haskell>.