diff options
-rw-r--r-- | haskell.vim | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/haskell.vim b/haskell.vim new file mode 100644 index 00000000..14f6f591 --- /dev/null +++ b/haskell.vim @@ -0,0 +1,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 |