@@ -25,7 +25,7 @@ syn case match
2525syn include @odocSyntaxOCaml syntax/ocaml.vim
2626unlet b: current_syntax
2727
28- syn cluster odocInline contains =odocBold,odocItalic,odocEmphasis,odocMiscInline,odocList,odocLinkText,odocUrl,odocBraceError ,odocCode,odocCrossref, odocCodeBlock,odocVerbatim,odocTargetSpecific,odocTag
28+ syn cluster odocInline contains =odocBold,odocItalic,odocEmphasis,odocMiscInline,odocList,odocLinkText,odocUrl,odocCrossref ,odocCode,odocCodeBlock,odocVerbatim,odocTargetSpecific,odocTag,odocEscaped,odocEscapedError,odocBraceError,odocTagError
2929
3030syn match odocBraceError " [{}]"
3131
@@ -57,33 +57,45 @@ syn region odocTable matchgroup=odocMarker start="{t\>" end="}" contains=@Spell,
5757syn region odocTable matchgroup =odocMarker start =" {table\> " end =" }" contains =odocTableRow
5858syn region odocTableRow matchgroup =odocMarker start =" {tr\> " end =" }" contains =odocTableEntry
5959syn region odocTableEntry matchgroup =odocMarker start =" {t[dh]\> " end =" }" contains =@Spell,@odocInline
60- syn region odocCode matchgroup =odocMarker start =" \[ " end =" \] "
60+ syn match odocEscapedBracket contained " \\ [][]"
61+ syn region odocBalancedBracket contained start =" \[ " end =" ]"
62+ syn region odocCode matchgroup =odocMarker start =" \[ " end =" \] " contains =odocBalancedBracket,odocEscapedBracket
6163syn region odocCodeBlock matchgroup =odocMarker start =" {@[^\[ ]\+\[ " end =" \] }"
6264syn region odocCodeBlock matchgroup =odocMarker start =" {\% (@ocaml\% (\s [^\[ ]*\)\?\)\?\[ " end =" \] }" contains =@odocSyntaxOCaml
6365syn match odocListMarker " ^\s *[-+]\s "
6466syn region odocListItem contained matchgroup =odocListMarker start =" {\% (-\| li\>\) " end =" }" contains =@Spell,@odocInline
6567syn region odocList matchgroup =odocListMarker start =" {[ou]l\> " end =" }" contains =odocListItem
6668" a bit leniant with ":"
6769syn match odocCrossrefKw contained " \<\% (module\% (-type\)\?\| class\% (-type\)\?\| val\| type\| exception\| method\| constructor\| extension\| field\| instance-variable\| section\| page\) [-:]"
68- syn region odocCrossref start =" {!" end =" }" contains =odocCrossrefKw
69- 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 " \\ [][{}@\\ ]"
7076
7177" Shamelessly borrowed from HTML syntax
7278hi def odocBold term = bold cterm= bold gui = bold
7379hi def odocEmphasis term = underline cterm= underline gui = underline
7480hi def odocItalic term = italic cterm= italic gui = italic
7581
76- hi def link odocCrossref Float
82+ hi def link odocUrlMarker odocMarker
83+ hi def link odocUrl Underlined
84+ hi def link odocCrossrefMarker odocCrossref " or odocMarker
85+ hi def link odocCrossref Label
7786hi def link odocCrossrefKw Keyword
7887hi def link odocHeading Title
7988hi def link odocHeadingLabel Label
8089hi def link odocListMarker Operator
8190hi def link odocMarker Delimiter
8291hi def link odocTag Keyword
92+
8393hi def link odocBraceError Error
84- hi def link odocUrlMarker odocMarker
85- hi def link odocUrl Underlined
8694hi def link odocUnknownTarget Error
95+ hi def link odocTagError Error
96+ hi def link odocEscapedError Error
97+ hi def link odocEscaped SpecialChar
98+ hi def link odocEscapedBracket odocEscaped
8799
88100let b: current_syntax = " odoc"
89101
0 commit comments