@@ -23,15 +23,23 @@ syn case match
2323syn include @odocSyntaxOCaml syntax/ocaml.vim
2424unlet b: current_syntax
2525
26- syn cluster odocInline contains =odocBold,odocItalic,odocEmphasis,odocMiscInline,odocList,odocLink,odocCode,odocCrossref,odocCodeBlock,odocVerbatim,odocTargetSpecific,odocTag
26+ syn spell toplevel
27+
28+ syn cluster odocInline contains =odocBold,odocItalic,odocEmphasis,odocMiscInline,odocList,odocLinkText,odocUrl,odocCrossref,odocCode,odocCodeBlock,odocVerbatim,odocTargetSpecific,odocTag,odocEscaped,odocEscapedError,odocBraceError,odocTagError
29+
30+ syn match odocBraceError " [{}]"
31+
32+ syn region odocLinkText transparent matchgroup =odocMarker start =" {\% ({[!:]\)\@ =" end =" }" contains =odocUrl,odocCrossref,@Spell,@odocInline
33+ syn region odocUrl matchgroup =odocUrlMarker start =" {:\_ s*" end =" \_ s*}"
2734
28- syn region odocLink matchgroup =odocLinkMarker start =" {" end =" }" contains =odocCrossref
2935syn region odocBold matchgroup =odocMarker start =" {b\> " end =" }" contains =@Spell,@odocInline
3036syn region odocEmphasis matchgroup =odocMarker start =" {e\> " end =" }" contains =@Spell,@odocInline
3137syn region odocItalic matchgroup =odocMarker start =" {i\> " end =" }" contains =@Spell,@odocInline
3238syn region odocMiscInline matchgroup =odocMarker start =" {[CLR^_]" end =" }" contains =@Spell,@odocInline
3339syn region odocVerbatim matchgroup =odocMarker start =" {v\> " end =" \< v}"
3440
41+ syn region odocTargetSpecific matchgroup =odocUnknownTarget start =" {%.\{ -}:\| {%" end =" %}"
42+
3543if get (g: ,' odoc_html_support' ,0 )
3644 syn include @odocHtml syntax/html.vim
3745 unlet b: current_syntax
4048 syn region odocTargetSpecific matchgroup =odocMarker start =" {%html:" end =" %}" contains =@Spell
4149endif
4250
43- syn region odocDyckWord contained start =" {" end =" }" contains =odocDyckWord
51+ syn region odocDyckWord contained transparent start =" {" end =" }" contains =odocDyckWord
4452syn region odocTargetSpecific matchgroup =odocMarker start =" {m\% (ath\)\?\> " end =" }" contains =odocDyckWord
4553syn region odocTargetSpecific matchgroup =odocMarker start =" {%\% (latex\| texi\| man\) :" end =" %}" contains =@Spell
46- syn region odocHeading start =" {[0-5]" end =" }" contains =@Spell
47- syn region odocTable matchgroup =odocMarker start =" {t\> " end =" }" contains =@Spell,@odocInline
48- syn region odocTable matchgroup =odocMarker start =" {table\> " end =" }" contains =odocTableRow
49- syn region odocTableRow matchgroup =odocMarker start =" {tr\> " end =" }" contains =odocTableEntry
50- syn region odocTableEntry matchgroup =odocMarker start =" {t[dh]\> " end =" }" contains =@Spell,@odocInline
51- syn region odocCode matchgroup =odocMarker start =" \[ " end =" \] "
54+ syn region odocHeading start =" {[0-5]\% (\s\| $\| :\)\@ =" end =" }" contains =@Spell,odocHeadingLabel
55+ syn match odocHeadingLabel contained " \% ({[0-5]\)\@ <=:[^ \t :]*"
56+ syn region odocTable transparent matchgroup =odocMarker start =" {t\> " end =" }" contains =@Spell,@odocInline
57+ syn region odocTable transparent matchgroup =odocMarker start =" {table\> " end =" }" contains =odocTableRow
58+ syn region odocTableRow transparent matchgroup =odocMarker start =" {tr\> " end =" }" contains =odocTableEntry
59+ syn region odocTableEntry transparent matchgroup =odocMarker start =" {t[dh]\> " end =" }" contains =@Spell,@odocInline
60+ syn match odocEscapedBracket contained " \\ [][]"
61+ syn region odocBalancedBracket contained transparent start =" \[ " end =" ]"
62+ syn region odocCode matchgroup =odocMarker start =" \[ " end =" \] " contains =odocBalancedBracket,odocEscapedBracket
5263syn region odocCodeBlock matchgroup =odocMarker start =" {@[^\[ ]\+\[ " end =" \] }"
5364syn region odocCodeBlock matchgroup =odocMarker start =" {\% (@ocaml\% (\s [^\[ ]*\)\?\)\?\[ " end =" \] }" contains =@odocSyntaxOCaml
5465syn match odocListMarker " ^\s *[-+]\s "
55- syn region odocListItem contained matchgroup =odocListMarker start =" {\% (-\| li\>\) " end =" }" contains =@Spell,@odocInline
56- syn region odocList matchgroup =odocListMarker start =" {[ou]l\> " end =" }" contains =odocListItem
66+ syn region odocListItem contained transparent matchgroup =odocListMarker start =" {\% (-\| li\>\) " end =" }" contains =@Spell,@odocInline
67+ syn region odocList transparent matchgroup =odocListMarker start =" {[ou]l\> " end =" }" contains =odocListItem
5768" a bit leniant with ":"
5869syn match odocCrossrefKw contained " \<\% (module\% (-type\)\?\| class\% (-type\)\?\| val\| type\| exception\| method\| constructor\| extension\| field\| instance-variable\| section\| page\) [-:]"
59- syn region odocCrossref start =" {!" end =" }" contains =odocCrossrefKw
60- syn match odocTag " @\% (author\| deprecated\| param\| raise\| return\| see\| since\| before\| version\) "
70+ syn region odocCrossref matchgroup =odocCrossrefMarker start =" {!" end =" }" contains =odocCrossrefKw
71+ syn match odocTagError " @[a-zA-Z]*"
72+ syn match odocTag " @\% (author\| deprecated\| param\| raise\| return\| see\| since\| before\| version\)\> "
73+
74+ syn match odocEscapedError " \\ ."
75+ syn match odocEscaped " \\ [][{}@\\ ]"
6176
6277" Shamelessly borrowed from HTML syntax
6378hi def odocBold term = bold cterm= bold gui = bold
6479hi def odocEmphasis term = bold ,underline cterm= bold ,underline gui = bold ,underline
6580hi def odocItalic term = italic cterm= italic gui = italic
6681
67- hi def link odocCrossref Float
82+ hi def link odocBraceError Error
83+ hi def link odocUnknownTarget Error
84+ hi def link odocTagError Error
85+ hi def link odocEscapedError Error
86+ hi def link odocEscaped SpecialChar
87+ hi def link odocEscapedBracket odocEscaped
88+ hi def link odocCrossref Label
6889hi def link odocCrossrefKw Keyword
6990hi def link odocHeading Title
70- hi def link odocLink Underlined
91+ hi def link odocHeadingLabel Label
92+ hi def link odocUrl Underlined
93+ hi def link odocUrlMarker odocMarker
94+ hi def link odocCrossrefMarker odocCrossref " or odocMarker
7195hi def link odocListMarker Operator
7296hi def link odocMarker Delimiter
7397hi def link odocTag Keyword
0 commit comments