1" DoxyGen syntax hilighting extension for c/c++/idl/java 2" Language: doxygen on top of c, cpp, idl, java, php 3" Maintainer: Michael Geddes <[email protected]> 4" Author: Michael Geddes 5" Last Changes: Jan 2009 (\tparam by Domnique Pelle, Aug 2013) 6" Nov 2017 (@throws by Domnique Pelle) 7" Version: 1.23 8" 9" Copyright 2004-2008 Michael Geddes 10" Please feel free to use, modify & distribute all or part of this script, 11" providing this copyright message remains. 12" I would appreciate being acknowledged in any derived scripts, and would 13" appreciate and welcome any updates, modifications or suggestions. 14 15" NOTE: Comments welcome! 16" 17" There are two variables that control the syntax highlighting produced by this 18" script: 19" doxygen_enhanced_colour - Use the (non-standard) original colours designed 20" for this highlighting. 21" doxygen_my_rendering - Disable the HTML bold/italic/underline rendering. 22" 23" A brief description without '.' or '!' will cause the end comment 24" character to be marked as an error. You can define the colour of this using 25" the highlight doxygenErrorComment. 26" A \link without an \endlink will cause an error highlight on the end-comment. 27" This is defined by doxygenLinkError 28" 29" The variable g:doxygen_codeword_font can be set to the guifont for marking \c 30" words - a 'typewriter' like font normally. Spaces must be escaped. It can 31" also be set to any highlight attribute. Alternatively, a highlight for doxygenCodeWord 32" can be used to override it. 33" 34" By default, highlighting is done assuming you have the JAVADOC_AUTOBRIEF 35" setting turned on in your Doxygen configuration. If you don't, you 36" can set the variable g:doxygen_javadoc_autobrief to 0 to have the 37" highlighting more accurately reflect the way Doxygen will interpret your 38" comments. 39" 40" Support for cpp, c, idl, doxygen and php. 41" 42" Special thanks to: Wu Yongwei, Toby Allsopp 43" 44 45if exists('b:suppress_doxygen') 46 unlet b:suppress_doxygen 47 finish 48endif 49 50if exists('b:current_syntax') && b:current_syntax =~ 'doxygen' && !exists('doxygen_debug_script') 51 finish 52endif 53 54let s:cpo_save = &cpo 55try 56 set cpo&vim 57 58 " Start of Doxygen syntax hilighting: 59 " 60 61 " C/C++ Style line comments 62 syn region doxygenComment start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO keepend fold containedin=phpRegion 63 syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl nextgroup=doxygenComment2 fold containedin=phpRegion 64 syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl fold containedin=phpRegion 65 syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion 66 67 " Single line brief followed by multiline comment. 68 syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend fold 69 " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched. 70 syn match doxygenSyncStart2 +[^*/]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenSkipComment,doxygenStartSkip2 skipwhite skipnl 71 72 " Skip empty lines at the start for when comments start on the 2nd/3rd line. 73 syn match doxygenStartSkip2 +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkip skipwhite skipnl 74 syn match doxygenStartSkip2 +^\s*\*$+ contained nextgroup=doxygenBody,doxygenStartSpecial,,doxygenStartSkip skipwhite skipnl 75 syn match doxygenStart2 +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenStartSkip2 skipwhite skipnl 76 77 78 " Match the Starting pattern (effectively creating the start of a BNF) 79 if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief 80 syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl 81 syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial skipwhite 82 " Match the first sentence as a brief comment 83 if ! exists('g:doxygen_end_punctuation') 84 let g:doxygen_end_punctuation='[.]' 85 endif 86 87 exe 'syn region doxygenBrief contained start=+[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]+ start=+\(^\s*\)\@<!\*/\@!+ start=+\<\k+ skip=+'.doxygen_end_punctuation.'\S\@=+ end=+'.doxygen_end_punctuation.'+ end=+\(\s*\(\n\s*\*\=\s*\)[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\@=+ contains=doxygenSmallSpecial,doxygenContinueComment,doxygenBriefEndComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipnl nextgroup=doxygenBody' 88 89 syn match doxygenBriefEndComment +\*/+ contained 90 91 exe 'syn region doxygenBriefL start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@]+ start=+\<+ skip=+'.doxygen_end_punctuation.'\S+ end=+'.doxygen_end_punctuation.'\|$+ contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend' 92 syn match doxygenPrevL +<+ contained nextgroup=doxygenBriefL,doxygenSpecial skipwhite 93 else 94 syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl 95 syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenPrevL,doxygenLine,doxygenSpecial skipwhite 96 syn region doxygenLine start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@<]+ start=+\<+ end='$' contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend 97 syn match doxygenPrevL +<+ contained nextgroup=doxygenLine,doxygenSpecial skipwhite 98 99 endif 100 101 " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched. 102 syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl 103 104 syn region doxygenBriefLine contained start=+\<\k+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ contains=doxygenContinueComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipwhite keepend 105 106 " Match a '<' for applying a comment to the previous element. 107 syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkip skipwhite 108 109if exists("c_comment_strings") 110 " These are anti-Doxygen comments. If there are more than two asterisks or 3 '/'s 111 " then turn the comments back into normal C comments. 112 syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cCommentString,cCharacter,cNumbersCom,cSpaceError 113 syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError 114else 115 syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cSpaceError 116 syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cSpaceError 117endif 118 119 " Special commands at the start of the area: starting with '@' or '\' 120 syn region doxygenStartSpecial contained start=+[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=doxygenSpecial nextgroup=doxygenSkipComment skipnl keepend 121 syn match doxygenSkipComment contained +^\s*\*/\@!+ nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenPage skipwhite 122 123 "syn region doxygenBodyBit contained start=+$+ 124 125 " The main body of a doxygen comment. 126 syn region doxygenBody contained start=+\(/\*[*!]\)\@<!<\|[^<]\|$+ matchgroup=doxygenEndComment end=+\*/+re=e-2,me=e-2 contains=doxygenContinueComment,doxygenTODO,doxygenSpecial,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell 127 128 " These allow the skipping of comment continuation '*' characters. 129 syn match doxygenContinueComment contained +^\s*\*/\@!\s*+ 130 131 " Catch a Brief comment without punctuation - flag it as an error but 132 " make sure the end comment is picked up also. 133 syn match doxygenErrorComment contained +\*/+ 134 135 136 " Skip empty lines at the start for when comments start on the 2nd/3rd line. 137 if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief 138 syn match doxygenStartSkip +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl 139 syn match doxygenStartSkip +^\s*\*$+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl 140 else 141 syn match doxygenStartSkip +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage,doxygenBody skipwhite skipnl 142 syn match doxygenStartSkip +^\s*\*$+ contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage,doxygenBody skipwhite skipnl 143 endif 144 145 " Match an [@\]brief so that it moves to body-mode. 146 " 147 " 148 " syn match doxygenBriefLine contained 149 syn match doxygenBriefSpecial contained +[@\\]+ nextgroup=doxygenBriefWord skipwhite 150 syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained 151 152 153 " Create the single word matching special identifiers. 154 155 fun! s:DxyCreateSmallSpecial( kword, name ) 156 157 let mx='[-:0-9A-Za-z_%=&+*/!~>|]\@<!\([-0-9A-Za-z_%=+*/!~>|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,][0-9a-zA-Z_]\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+' 158 exe 'syn region doxygenSpecial'.a:name.'Word contained start=+'.a:kword.'+ end=+\(\_s\+'.mx.'\)\@<=[-a-zA-Z_0-9+*/^%|~!=&\\]\@!+ skipwhite contains=doxygenContinueComment,doxygen'.a:name.'Word' 159 exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial,@Spell keepend' 160 endfun 161 call s:DxyCreateSmallSpecial('p', 'Code') 162 call s:DxyCreateSmallSpecial('c', 'Code') 163 call s:DxyCreateSmallSpecial('b', 'Bold') 164 call s:DxyCreateSmallSpecial('e', 'Emphasised') 165 call s:DxyCreateSmallSpecial('em', 'Emphasised') 166 call s:DxyCreateSmallSpecial('a', 'Argument') 167 call s:DxyCreateSmallSpecial('ref', 'Ref') 168 delfun s:DxyCreateSmallSpecial 169 170 syn match doxygenSmallSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\>\|\<link\>\|f\$\|[$\\&<>#]\)\@=+ nextgroup=doxygenOtherLink,doxygenHyperLink,doxygenHashLink,doxygenFormula,doxygenSymbol,doxygenSpecial.*Word 171 172 " Now for special characters 173 syn match doxygenSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\|\<link\>\>\|\<f\$\|[$\\&<>#]\)\@!+ nextgroup=doxygenParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion 174 " doxygenOtherLink,doxygenSymbol,doxygenFormula,doxygenErrorSpecial,doxygenSpecial.*Word 175 " 176 syn match doxygenGroupDefine contained +@\@<=[{}]+ 177 syn match doxygenGroupDefineSpecial contained +@\ze[{}]+ 178 179 syn match doxygenErrorSpecial contained +\s+ 180 181 " Match parameters and retvals (highlighting the first word as special). 182 syn match doxygenParamDirection contained "\v\[(\s*in>((]\s*\[|\s*,\s*)out>)=|out>((]\s*\[|\s*,\s*)in>)=)\]" nextgroup=doxygenParamName skipwhite 183 syn keyword doxygenParam contained param tparam nextgroup=doxygenParamName,doxygenParamDirection skipwhite 184 syn match doxygenParamName contained +[A-Za-z0-9_:]\++ nextgroup=doxygenSpecialMultilineDesc skipwhite 185 syn keyword doxygenRetval contained retval throw throws exception nextgroup=doxygenParamName skipwhite 186 187 " Match one line identifiers. 188 syn keyword doxygenOther contained addindex anchor 189 \ dontinclude endhtmlonly endlatexonly showinitializer hideinitializer 190 \ example htmlonly image include ingroup internal latexonly line 191 \ overload related relates relatedalso relatesalso sa skip skipline 192 \ until verbinclude version addtogroup htmlinclude copydoc dotfile 193 \ xmlonly endxmlonly 194 \ nextgroup=doxygenSpecialOnelineDesc 195 196 syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\<code\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endcode\>+ contains=doxygenCodeRegionSpecial,doxygenContinueComment,doxygenErrorComment,@NoSpell 197 syn match doxygenCodeRegionSpecial contained +[\\@]\(endcode\>\)\@=+ 198 199 syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueComment,doxygenErrorComment,@NoSpell 200 syn match doxygenVerbatimRegionSpecial contained +[\\@]\(endverbatim\>\)\@=+ 201 202 if exists('b:current_syntax') 203 let b:doxygen_syntax_save=b:current_syntax 204 unlet b:current_syntax 205 endif 206 207 syn include @Dotx syntax/dot.vim 208 209 if exists('b:doxygen_syntax_save') 210 let b:current_syntax=b:doxygen_syntax_save 211 unlet b:doxygen_syntax_save 212 else 213 unlet b:current_syntax 214 endif 215 216 syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueComment,@NoSpell,@Dotx 217 syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+ 218 219 " Match single line identifiers. 220 syn keyword doxygenBOther contained class enum file fn mainpage interface 221 \ namespace struct typedef union var def name 222 \ nextgroup=doxygenSpecialTypeOnelineDesc 223 224 syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine 225 syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc 226 227 syn keyword doxygenOther contained arg author authors date deprecated li result return returns see invariant note post pre remark remarks since test nextgroup=doxygenSpecialMultilineDesc 228 syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc 229 syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc 230 syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc 231 232 " Handle \link, \endlink, highlighting the link-to and the link text bits separately. 233 syn region doxygenOtherLink matchgroup=doxygenOther start=+\<link\>+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueComment,doxygenLinkError,doxygenEndlinkSpecial 234 syn match doxygenEndlinkSpecial contained +[\\@]\zeendlink\>+ 235 236 syn match doxygenLinkWord "[_a-zA-Z:#()][_a-z0-9A-Z:#()]*\>" contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment 237 syn match doxygenLinkRest +[^*@\\]\|\*/\@!\|[@\\]\(endlink\>\)\@!+ contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment 238 syn match doxygenContinueLinkComment contained +^\s*\*\=[^/]+me=e-1 nextgroup=doxygenLinkRest 239 syn match doxygenLinkError "\*/" contained 240 " #Link hilighting. 241 syn match doxygenHashLink /\([a-zA-Z_][0-9a-zA-Z_]*\)\?#\(\.[0-9a-zA-Z_]\@=\|[a-zA-Z0-9_]\+\|::\|()\)\+/ contained contains=doxygenHashSpecial 242 syn match doxygenHashSpecial /#/ contained 243 syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained 244 245 " Handle \page. This does not use doxygenBrief. 246 syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage 247 syn keyword doxygenPagePage page contained skipwhite nextgroup=doxygenPageIdent 248 syn region doxygenPageDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenBody 249 syn match doxygenPageIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenPageDesc 250 251 " Handle section 252 syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent 253 syn region doxygenSpecialSectionDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueComment 254 syn match doxygenSpecialIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenSpecialSectionDesc 255 256 " Does the one-line description for the one-line type identifiers. 257 syn region doxygenSpecialTypeOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend 258 syn region doxygenSpecialOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend 259 260 " Handle the multiline description for the multiline type identifiers. 261 " Continue until an 'empty' line (can contain a '*' continuation) or until the 262 " next whole-line @ command \ command. 263 syn region doxygenSpecialMultilineDesc start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueComment,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend 264 syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite 265 266 " Handle special cases 'bold' and 'group' 267 syn keyword doxygenBold contained bold nextgroup=doxygenSpecialHeading 268 syn keyword doxygenBriefWord contained brief nextgroup=doxygenBriefLine skipwhite 269 syn match doxygenSpecialHeading +.\++ contained skipwhite 270 syn keyword doxygenGroup contained group nextgroup=doxygenGroupName skipwhite 271 syn keyword doxygenGroupName contained +\k\++ nextgroup=doxygenSpecialOnelineDesc skipwhite 272 273 " Handle special symbol identifiers @$, @\, @$ etc 274 syn match doxygenSymbol contained +[$\\&<>#n]+ 275 276 " Simplistic handling of formula regions 277 syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\$+ end=+[@\\]f\$+ contains=doxygenFormulaSpecial,doxygenFormulaOperator 278 syn match doxygenFormulaSpecial contained +[@\\]\(f[^$]\|[^f]\)+me=s+1 nextgroup=doxygenFormulaKeyword,doxygenFormulaEscaped 279 syn match doxygenFormulaEscaped contained "." 280 syn match doxygenFormulaKeyword contained "[a-z]\+" 281 syn match doxygenFormulaOperator contained +[_^]+ 282 283 syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\[+ end=+[@\\]f]+ contains=doxygenFormulaSpecial,doxygenFormulaOperator,doxygenAtom 284 syn region doxygenAtom contained transparent matchgroup=doxygenFormulaOperator start=+{+ end=+}+ contains=doxygenAtom,doxygenFormulaSpecial,doxygenFormulaOperator 285 286 " Add TODO hilighting. 287 syn keyword doxygenTODO contained TODO README XXX FIXME 288 289 " Supported HTML subset. Not perfect, but okay. 290 syn case ignore 291 syn region doxygenHtmlTag contained matchgroup=doxygenHtmlCh start=+\v\</=\ze([biuap]|em|strong|img|br|center|code|dfn|d[ldt]|hr|h[0-3]|li|[ou]l|pre|small|sub|sup|table|tt|var|caption|src|alt|longdesc|name|height|width|usemap|ismap|href|type)>+ skip=+\\<\|\<\k\+=\("[^"]*"\|'[^']*\)+ end=+>+ contains=doxygenHtmlCmd,doxygenContinueComment,doxygenHtmlVar 292 syn keyword doxygenHtmlCmd contained b i em strong u img a br p center code dfn dl dd dt hr h1 h2 h3 li ol ul pre small sub sup table tt var caption nextgroup=doxygenHtmlVar skipwhite 293 syn keyword doxygenHtmlVar contained src alt longdesc name height width usemap ismap href type nextgroup=doxygenHtmlEqu skipwhite 294 syn match doxygenHtmlEqu contained +=+ nextgroup=doxygenHtmlExpr skipwhite 295 syn match doxygenHtmlExpr contained +"\(\\.\|[^"]\)*"\|'\(\\.\|[^']\)*'+ nextgroup=doxygenHtmlVar skipwhite 296 syn case match 297 syn match doxygenHtmlSpecial contained "&\(copy\|quot\|[AEIOUYaeiouy]uml\|[AEIOUYaeiouy]acute\|[AEIOUaeiouy]grave\|[AEIOUaeiouy]circ\|[ANOano]tilde\|szlig\|[Aa]ring\|nbsp\|gt\|lt\|amp\);" 298 299 syn cluster doxygenHtmlGroup contains=doxygenHtmlCode,doxygenHtmlBold,doxygenHtmlUnderline,doxygenHtmlItalic,doxygenHtmlSpecial,doxygenHtmlTag,doxygenHtmlLink 300 301 syn cluster doxygenHtmlTop contains=@Spell,doxygenHtmlSpecial,doxygenHtmlTag,doxygenContinueComment 302 " Html Support 303 syn region doxygenHtmlLink contained start=+<[aA]\>\s*\(\n\s*\*\s*\)\=\(\(name\|href\)=\("[^"]*"\|'[^']*'\)\)\=\s*>+ end=+</[aA]>+me=e-4 contains=@doxygenHtmlTop 304 hi link doxygenHtmlLink Underlined 305 306 syn region doxygenHtmlBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell 307 syn region doxygenHtmlBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell 308 syn region doxygenHtmlBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell 309 syn region doxygenHtmlBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell 310 syn region doxygenHtmlBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell 311 syn region doxygenHtmlBoldUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell 312 syn region doxygenHtmlBoldUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell 313 syn region doxygenHtmlBoldItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell 314 315 syn region doxygenHtmlUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBold,doxygenHtmlUnderlineItalic,@Spell 316 syn region doxygenHtmlUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell 317 syn region doxygenHtmlUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell 318 syn region doxygenHtmlUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell 319 syn region doxygenHtmlUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell 320 syn region doxygenHtmlUnderlineItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell 321 syn region doxygenHtmlUnderlineItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell 322 syn region doxygenHtmlUnderlineBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell 323 syn region doxygenHtmlUnderlineBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell 324 325 syn region doxygenHtmlItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBold,doxygenHtmlItalicUnderline,@Spell 326 syn region doxygenHtmlItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell 327 syn region doxygenHtmlItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell 328 syn region doxygenHtmlItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell 329 syn region doxygenHtmlItalicBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,@Spell 330 syn region doxygenHtmlItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicUnderlineBold,@Spell 331 syn region doxygenHtmlItalicUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell 332 syn region doxygenHtmlItalicUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell 333 334 syn region doxygenHtmlCode contained start="\c<code\>" end="\c</code>"me=e-7 contains=@doxygenHtmlTop,@NoSpell 335 336 " Prevent the doxygen contained matches from leaking into the c/rc groups. 337 syn cluster cParenGroup add=doxygen.* 338 syn cluster cParenGroup remove=doxygenComment,doxygenCommentL 339 syn cluster cPreProcGroup add=doxygen.* 340 syn cluster cMultiGroup add=doxygen.* 341 syn cluster rcParenGroup add=doxygen.* 342 syn cluster rcParenGroup remove=doxygenComment,doxygenCommentL 343 syn cluster rcGroup add=doxygen.* 344 345 let s:my_syncolor=0 346 if !exists(':SynColor') 347 command -nargs=+ SynColor hi def <args> 348 let s:my_syncolor=1 349 endif 350 351 let s:my_synlink=0 352 if !exists(':SynLink') 353 command -nargs=+ SynLink hi def link <args> 354 let s:my_synlink=1 355 endif 356 357 try 358 "let did_doxygen_syntax_inits = &background 359 hi doxygen_Dummy guifg=black 360 361 fun! s:Doxygen_Hilights_Base() 362 SynLink doxygenHtmlSpecial Special 363 SynLink doxygenHtmlVar Type 364 SynLink doxygenHtmlExpr String 365 366 SynLink doxygenSmallSpecial SpecialChar 367 368 SynLink doxygenSpecialCodeWord doxygenSmallSpecial 369 SynLink doxygenSpecialBoldWord doxygenSmallSpecial 370 SynLink doxygenSpecialEmphasisedWord doxygenSmallSpecial 371 SynLink doxygenSpecialArgumentWord doxygenSmallSpecial 372 373 " SynColor doxygenFormulaKeyword cterm=bold ctermfg=DarkMagenta guifg=DarkMagenta gui=bold 374 SynLink doxygenFormulaKeyword Keyword 375 "SynColor doxygenFormulaEscaped ctermfg=DarkMagenta guifg=DarkMagenta gui=bold 376 SynLink doxygenFormulaEscaped Special 377 SynLink doxygenFormulaOperator Operator 378 SynLink doxygenFormula Statement 379 SynLink doxygenSymbol Constant 380 SynLink doxygenSpecial Special 381 SynLink doxygenFormulaSpecial Special 382 "SynColor doxygenFormulaSpecial ctermfg=DarkBlue guifg=DarkBlue 383 endfun 384 call s:Doxygen_Hilights_Base() 385 386 fun! s:Doxygen_Hilights() 387 " Pick a sensible default for 'codeword'. 388 let font='' 389 if exists('g:doxygen_codeword_font') 390 if g:doxygen_codeword_font !~ '\<\k\+=' 391 let font='font='.g:doxygen_codeword_font 392 else 393 let font=g:doxygen_codeword_font 394 endif 395 else 396 " Try and pick a font (only some platforms have been tested). 397 if has('gui_running') 398 if has('gui_gtk2') 399 if &guifont == '' 400 let font="font='FreeSerif 12'" 401 else 402 let font="font='".substitute(&guifont, '^.\{-}\([0-9]\+\)$', 'FreeSerif \1','')."'" 403 endif 404 405 elseif has('gui_win32') || has('gui_win16') || has('gui_win95') 406 407 if exists('g:doxygen_use_bitsream_vera') && g:doxygen_use_bitsream_vera 408 let font_base='Bitstream_Vera_Sans_Mono' 409 else 410 let font_base='Lucida_Console' 411 endif 412 if &guifont == '' 413 let font='font='.font_base.':h10' 414 else 415 let font='font='.matchstr(substitute(&guifont, '^[^:]*', font_base,''),'[^,]*') 416 endif 417 elseif has('gui_athena') || has('gui_gtk') || &guifont=~'^\(-[^-]\+\)\{14}' 418 if &guifont == '' 419 let font='font=-b&h-lucidatypewriter-medium-r-normal-*-*-140-*-*-m-*-iso8859-1' 420 else 421 " let font='font='.substitute(&guifont,'^\(-[^-]\+\)\{7}-\([0-9]\+\).*', '-b\&h-lucidatypewriter-medium-r-normal-*-*-\2-*-*-m-*-iso8859-1','') 422 " The above line works, but it is hard to expect the combination of 423 " the two fonts will look good. 424 endif 425 elseif has('gui_kde') 426 " let font='font=Bitstream\ Vera\ Sans\ Mono/12/-1/5/50/0/0/0/0/0' 427 endif 428 endif 429 endif 430 if font=='' | let font='gui=bold' | endif 431 exe 'SynColor doxygenCodeWord term=bold cterm=bold '.font 432 if (exists('g:doxygen_enhanced_color') && g:doxygen_enhanced_color) || (exists('g:doxygen_enhanced_colour') && g:doxygen_enhanced_colour) 433 if &background=='light' 434 SynColor doxygenComment ctermfg=DarkRed guifg=DarkRed 435 SynColor doxygenBrief cterm=bold ctermfg=Cyan guifg=DarkBlue gui=bold 436 SynColor doxygenBody ctermfg=DarkBlue guifg=DarkBlue 437 SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=DarkRed guifg=firebrick3 gui=bold 438 SynColor doxygenBOther cterm=bold ctermfg=DarkMagenta guifg=#aa50aa gui=bold 439 SynColor doxygenParam ctermfg=DarkGray guifg=#aa50aa 440 SynColor doxygenParamName cterm=italic ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=italic,bold 441 SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=DarkCyan guifg=DodgerBlue3 gui=bold 442 SynColor doxygenSpecialHeading cterm=bold ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=bold 443 SynColor doxygenPrev ctermfg=DarkGreen guifg=DarkGreen 444 else 445 SynColor doxygenComment ctermfg=LightRed guifg=LightRed 446 SynColor doxygenBrief cterm=bold ctermfg=Cyan ctermbg=darkgrey guifg=LightBlue gui=Bold,Italic 447 SynColor doxygenBody ctermfg=Cyan guifg=LightBlue 448 SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=Red guifg=firebrick3 gui=bold 449 SynColor doxygenBOther cterm=bold ctermfg=Magenta guifg=#aa50aa gui=bold 450 SynColor doxygenParam ctermfg=LightGray guifg=LightGray 451 SynColor doxygenParamName cterm=italic ctermfg=LightBlue guifg=LightBlue gui=italic,bold 452 SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=LightCyan guifg=LightCyan gui=bold 453 SynColor doxygenSpecialHeading cterm=bold ctermfg=LightBlue guifg=LightBlue gui=bold 454 SynColor doxygenPrev ctermfg=LightGreen guifg=LightGreen 455 endif 456 else 457 SynLink doxygenComment SpecialComment 458 SynLink doxygenBrief Statement 459 SynLink doxygenBody Comment 460 SynLink doxygenSpecialTypeOnelineDesc Statement 461 SynLink doxygenBOther Constant 462 SynLink doxygenParam SpecialComment 463 SynLink doxygenParamName Underlined 464 SynLink doxygenSpecialOnelineDesc Statement 465 SynLink doxygenSpecialHeading Statement 466 SynLink doxygenPrev SpecialComment 467 endif 468 endfun 469 470 call s:Doxygen_Hilights() 471 472 " This is still a proposal, but won't do any harm. 473 aug doxygengroup 474 au! 475 au Syntax UserColor_reset nested call s:Doxygen_Hilights_Base() 476 au Syntax UserColor_{on,reset,enable} nested call s:Doxygen_Hilights() 477 aug END 478 479 480 SynLink doxygenBody Comment 481 SynLink doxygenLine doxygenBody 482 SynLink doxygenTODO Todo 483 SynLink doxygenOtherTODO Todo 484 SynLink doxygenOtherWARN Todo 485 SynLink doxygenOtherBUG Todo 486 487 SynLink doxygenErrorSpecial Error 488 SynLink doxygenErrorEnd Error 489 SynLink doxygenErrorComment Error 490 SynLink doxygenLinkError Error 491 SynLink doxygenBriefSpecial doxygenSpecial 492 SynLink doxygenHashSpecial doxygenSpecial 493 SynLink doxygenGroupDefineSpecial doxygenSpecial 494 SynLink doxygenEndlinkSpecial doxygenSpecial 495 SynLink doxygenCodeRegionSpecial doxygenSpecial 496 SynLink doxygenVerbatimRegionSpecial doxygenSpecial 497 SynLink doxygenDotRegionSpecial doxygenSpecial 498 SynLink doxygenGroupDefine doxygenParam 499 500 SynLink doxygenSpecialMultilineDesc doxygenSpecialOnelineDesc 501 SynLink doxygenFormulaEnds doxygenSpecial 502 SynLink doxygenBold doxygenParam 503 SynLink doxygenBriefWord doxygenParam 504 SynLink doxygenRetval doxygenParam 505 SynLink doxygenOther doxygenParam 506 SynLink doxygenStart doxygenComment 507 SynLink doxygenStart2 doxygenStart 508 SynLink doxygenComment2 doxygenComment 509 SynLink doxygenCommentL doxygenComment 510 SynLink doxygenContinueComment doxygenComment 511 SynLink doxygenSpecialContinueComment doxygenComment 512 SynLink doxygenSkipComment doxygenComment 513 SynLink doxygenEndComment doxygenComment 514 SynLink doxygenStartL doxygenComment 515 SynLink doxygenBriefEndComment doxygenComment 516 SynLink doxygenPrevL doxygenPrev 517 SynLink doxygenBriefL doxygenBrief 518 SynLink doxygenBriefLine doxygenBrief 519 SynLink doxygenHeaderLine doxygenSpecialHeading 520 SynLink doxygenStartSkip doxygenContinueComment 521 SynLink doxygenLinkWord doxygenParamName 522 SynLink doxygenLinkRest doxygenSpecialMultilineDesc 523 SynLink doxygenHyperLink doxygenLinkWord 524 SynLink doxygenHashLink doxygenLinkWord 525 526 SynLink doxygenPage doxygenSpecial 527 SynLink doxygenPagePage doxygenBOther 528 SynLink doxygenPageIdent doxygenParamName 529 SynLink doxygenPageDesc doxygenSpecialTypeOnelineDesc 530 531 SynLink doxygenSpecialIdent doxygenPageIdent 532 SynLink doxygenSpecialSectionDesc doxygenSpecialMultilineDesc 533 534 SynLink doxygenSpecialRefWord doxygenOther 535 SynLink doxygenRefWord doxygenPageIdent 536 SynLink doxygenContinueLinkComment doxygenComment 537 538 SynLink doxygenHtmlCh Function 539 SynLink doxygenHtmlCmd Statement 540 SynLink doxygenHtmlBoldItalicUnderline doxygenHtmlBoldUnderlineItalic 541 SynLink doxygenHtmlUnderlineBold doxygenHtmlBoldUnderline 542 SynLink doxygenHtmlUnderlineItalicBold doxygenHtmlBoldUnderlineItalic 543 SynLink doxygenHtmlUnderlineBoldItalic doxygenHtmlBoldUnderlineItalic 544 SynLink doxygenHtmlItalicUnderline doxygenHtmlUnderlineItalic 545 SynLink doxygenHtmlItalicBold doxygenHtmlBoldItalic 546 SynLink doxygenHtmlItalicBoldUnderline doxygenHtmlBoldUnderlineItalic 547 SynLink doxygenHtmlItalicUnderlineBold doxygenHtmlBoldUnderlineItalic 548 SynLink doxygenHtmlLink Underlined 549 550 SynLink doxygenParamDirection StorageClass 551 552 553 if !exists("doxygen_my_rendering") && !exists("html_my_rendering") 554 SynColor doxygenBoldWord term=bold cterm=bold gui=bold 555 SynColor doxygenEmphasisedWord term=italic cterm=italic gui=italic 556 SynLink doxygenArgumentWord doxygenEmphasisedWord 557 SynLink doxygenHtmlCode doxygenCodeWord 558 SynLink doxygenHtmlBold doxygenBoldWord 559 SynColor doxygenHtmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline 560 SynColor doxygenHtmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic 561 SynColor doxygenHtmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline 562 SynColor doxygenHtmlUnderline term=underline cterm=underline gui=underline 563 SynColor doxygenHtmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline 564 SynColor doxygenHtmlItalic term=italic cterm=italic gui=italic 565 endif 566 567 finally 568 if s:my_synlink | delcommand SynLink | endif 569 if s:my_syncolor | delcommand SynColor | endif 570 endtry 571 572 if &syntax=='idl' 573 syn cluster idlCommentable add=doxygenComment,doxygenCommentL 574 endif 575 576 "syn sync clear 577 "syn sync maxlines=500 578 "syn sync minlines=50 579 syn sync match doxygenComment groupthere cComment "/\@<!/\*" 580 syn sync match doxygenSyncComment grouphere doxygenComment "/\@<!/\*[*!]" 581 "syn sync match doxygenSyncComment grouphere doxygenComment "/\*[*!]" contains=doxygenStart,doxygenTODO keepend 582 syn sync match doxygenSyncEndComment groupthere NONE "\*/" 583 584 if !exists('b:current_syntax') 585 let b:current_syntax = "doxygen" 586 else 587 let b:current_syntax = b:current_syntax.'.doxygen' 588 endif 589 590finally 591 let &cpo = s:cpo_save 592 unlet s:cpo_save 593endtry 594 595" vim:et sw=2 sts=2 596