Fetching contributors…
Cannot retrieve contributors at this time
69 lines (58 sloc) 2.77 KB
" Attempt to add haddock highlighting for haskell comments
" It should be placed in ~/.vim/after/syntax/haskell.vim
" Brad Bowman <>
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>
command -nargs=+ HiLink hi def link <args>
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
" Options for vi: sw=2 sts=2 nowrap ft=vim