Personal tools

HaskellWiki:Syntax highlighting

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(moved question to Talk page)
(Inline formatting with <hask>)
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''Syntax highlighting''' works for a bunch of languages including Haskell, using GeSHi and Jason Dagit's Haskell file, somewhat modified.
+
'''Syntax highlighting''' works for a bunch of languages including Haskell, using [http://qbnz.com/highlighter/ GeSHi] and [http://web.archive.org/web/20070503183148/http://www.codersbase.com/index.php/Geshi_haskell Jason Dagit's Haskell file], somewhat modified.
   
 
== Block formatting with <code>&lt;haskell&gt;</code> ==
 
== Block formatting with <code>&lt;haskell&gt;</code> ==
Line 11: Line 11:
 
import Prelude
 
import Prelude
   
foo :: (Monad m) -> m (Int,Int)
+
foo :: (Monad m) => m (Int,Int)
 
foo = (x-2,x - 1) where
 
foo = (x-2,x - 1) where
 
x = 3
 
x = 3
Line 27: Line 27:
   
 
Inline highlighting is a bit of a hack at the moment, and may be buggy.
 
Inline highlighting is a bit of a hack at the moment, and may be buggy.
  +
  +
:It is indeed, see [[User:benmachine/hasktag bug]] --[[User:Benmachine|benmachine]] 01:56, 5 September 2012 (UTC)
   
 
== Styles ==
 
== Styles ==
Line 42: Line 44:
 
* known modules: brown
 
* known modules: brown
   
I may also indent the entire block, similar to &lt;blockquote&gt;.
+
I also indent the entire block by 2em. See [[MediaWiki:Common.css]].
   
&mdash;[[User:Ashley Y|Ashley Y]] 07:46, 10 March 2006 (UTC)
+
&mdash;[[User:Ashley Y|Ashley Y]] 10:49, 19 March 2006 (UTC)
   
 
== Other languages ==
 
== Other languages ==
   
This works for certain other languages too. For lisp, for instance, use <code>&lt;pre-lisp&gt;</code>...<code>&lt;/pre-lisp&gt;</code> to format a block of lisp, and <code>&lt;code-lisp&gt;</code>...<code>&lt;/code-lisp&gt;</code> to format text inline. <code>&lt;haskell&gt;</code> the same as <code>&lt;pre-haskell&gt;</code> and <code>&lt;hask&gt;</code> the same as <code>&lt;code-haskell&gt;</code>.
+
This works for certain other languages too. For lisp, for instance, use <code>&lt;pre-lisp&gt;</code>...<code>&lt;/pre-lisp&gt;</code> to format a block of lisp, and <code>&lt;code-lisp&gt;</code>...<code>&lt;/code-lisp&gt;</code> to format text inline. <code>&lt;haskell&gt;</code> is the same as <code>&lt;pre-haskell&gt;</code> and <code>&lt;hask&gt;</code> is the same as <code>&lt;code-haskell&gt;</code>.

Revision as of 01:56, 5 September 2012

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

Contents

1 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")

2 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.

It is indeed, see User:benmachine/hasktag bug --benmachine 01:56, 5 September 2012 (UTC)

3 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)

4 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>.