diff options
| -rw-r--r-- | haskell.vim | 68 | 
1 files changed, 68 insertions, 0 deletions
diff --git a/haskell.vim b/haskell.vim new file mode 100644 index 00000000..0084630c --- /dev/null +++ b/haskell.vim @@ -0,0 +1,68 @@ +" 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   hsHdocChunk "$\i\+" contained
 +syn match   hsHdocMod /"\(\i\|[.]\)\+"/ contained
 +syn match   hsHdocLink "'\(\i\|[.#]\)\+'" contained
 +syn region  hsHdocAnchor start="\\\@<!#" skip="\\#" end="\\\@<!#" contained oneline
 +" I think emphasis can span multiple lines
 +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  hsHdocBCodeBlock start="^@\(\s\|$\)" end="^@\s*$" contained
 +syn region  hsHdocLCodeBlock start="\(^\s*--\s*\)\@<=@\s*$" end="\(^\s*--\s*\)\@<=@\s*$" 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
 +
 +" todo: numbered lists, mark haddock start separately
 +"syn match   hsHdocStart "\([$^|]\|\*\+\)" contained
 +
 +syn cluster hsHdocSpecial 
 +  \ contains=hsHdocMod,hsHdocLink,hsHdocEm,hsHdocCode,hsHdocURL,
 +  \ 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,hsHdocLCodeBlock,hsHdocDef
 +syn region  hsHdocBlock start="{-\s*\([$\^|]\|\*\+\)" end="-}" 
 +                      \ contains=@hsHdocSpecial,hsHdocBTracks,hsHdocBHeading,hsHdocBCodeBlock,hsHdocDef
 +
 +syn sync minlines=20
 +
 +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 hsHdocBCodeBlock       Special
 +  HiLink hsHdocLCodeBlock       Special
 +  HiLink hsHdocSpecial          Special
 +
 +  delcommand HiLink                       
 +endif
 +
 +" Options for vi: sw=2 sts=2 nowrap ft=vim
  | 
