aboutsummaryrefslogtreecommitdiff
path: root/haskell.vim
blob: 14f6f5911b72eaf65e3a5cc376323649c09cad9f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
" Attempt to add haddock highlighting for haskell comments
" It should be placed in ~/.vim/after/syntax/haskell.vim
" Brad Bowman <haddock.vim@bereft.net>

syn match   hsHdocStart "\([$^|]\|\*\+\)" contained

syn region  hsHdocAnchor start="#" skip="\\#" end="#" contained oneline
syn match   hsHdocChunk "$\i\+" contained
syn match   hsHdocMod /"\(\i\|[.]\)\+"/ contained
syn match   hsHdocLink "'\(\i\|[.#]\)\+'" contained
syn region  hsHdocEm start="/" skip="\\/" end="/" contained oneline
syn region  hsHdocURL start="<" end=">" contained oneline
syn region  hsHdocCode start="@" skip="\\@" end="@" contained oneline
syn region  hsHdocCodeBlock start="^@" end="^@" contained
syn match   hsHdocBHeading "^\s*\*\+" contained
syn match   hsHdocLHeading "\(^\s*--\s*\)\@<=\*\+" contained
syn match   hsHdocBTracks "^\s*>" contained
" match only the > using a look-behind
syn match   hsHdocLTracks "\(^\s*--\s*\)\@<=>" contained

syn cluster hsHdocSpecial 
  \ contains=hsHdocMod,hsHdocLink,hsHdocEm,hsHdocCode,hsHdocURL,
  \ hsHdocCodeBlock,hsHdocAnchor,hsHdocChunk

syn region  hsHdocDef start="^\s*\(--\)\?\s*\[" end="\]" contained contains=hsHdocSpecial

syn region  hsHdocLines start="--\s*\([$\^|]\|\*\+\)" 
                      \ skip="^\s*\(--.*\)$" 
                      \ end="^\s*\(\$\|--\)\@!" 
                      \ contains=@hsHdocSpecial,hsHdocLTracks,hsHdocLHeading
syn region  hsHdocBlock start="{-\s*\([$\^|]\|\*\+\)" end="-}" 
                      \ contains=@hsHdocSpecial,hsHdocBTracks,hsHdocBHeading

syn sync minlines=10

if version >= 508 || !exists("did_haddock_syntax_inits")
  if version < 508
    let did_haddock_syntax_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif

  HiLink hsHdocLines            hsHdoc
  HiLink hsHdocBlock            hsHdoc
  HiLink hsHdoc                 PreProc
  HiLink hsHdocAnchor           Special
  HiLink hsHdocChunk            Special
  HiLink hsHdocMod              Special
  HiLink hsHdocLink             Special
  HiLink hsHdocEm               Special
  HiLink hsHdocURL              Special
  HiLink hsHdocCode             Special
  HiLink hsHdocLHeading         Special
  HiLink hsHdocBHeading         Special
  HiLink hsHdocLTracks          Special
  HiLink hsHdocBTracks          Special
  HiLink hsHdocCodeBlock        Special
  HiLink hsHdocSpecial          Special

  delcommand HiLink                       
endif

" Options for vi: sw=2 sts=2 nowrap ft=vim