codekingpro/portable-devtools
114k
1" DoxyGen syntax highlighting extension for c/c++/idl/java2" Language: doxygen on top of c, cpp, idl, java, php3" Maintainer: Michael Geddes <vimmer@frog.wheelycreek.net>4" Author: Michael Geddes5" Last Change: December 20206" Version: 1.307"8" Copyright 2004-2020 Michael Geddes9" Please feel free to use, modify & distribute all or part of this script,10" providing this copyright message remains.11" I would appreciate being acknowledged in any derived scripts, and would12" appreciate and welcome any updates, modifications or suggestions.13 14" NOTE: Comments welcome!15"16" There are two variables that control the syntax highlighting produced by this17" script:18" doxygen_enhanced_colour - Use the (non-standard) original colours designed19" for this highlighting.20" doxygen_my_rendering - Disable the HTML bold/italic/underline rendering.21"22" A brief description without '.' or '!' will cause the end comment23" character to be marked as an error. You can define the colour of this using24" the highlight doxygenErrorComment.25" A \link without an \endlink will cause an error highlight on the end-comment.26" This is defined by doxygenLinkError27"28" The variable g:doxygen_codeword_font can be set to the guifont for marking \c29" words - a 'typewriter' like font normally. Spaces must be escaped. It can30" also be set to any highlight attribute. Alternatively, a highlight for doxygenCodeWord31" can be used to override it.32"33" By default, highlighting is done assuming you have the JAVADOC_AUTOBRIEF34" setting turned on in your Doxygen configuration. If you don't, you35" can set the variable g:doxygen_javadoc_autobrief to 0 to have the36" highlighting more accurately reflect the way Doxygen will interpret your37" comments.38"39" Support for cpp, c, idl, doxygen and php.40"41" Special thanks to: Wu Yongwei, Toby Allsopp42"43 44if exists('b:suppress_doxygen')45 unlet b:suppress_doxygen46 finish47endif48 49if exists('b:current_syntax') && b:current_syntax =~ 'doxygen' && !exists('doxygen_debug_script')50 finish51endif52 53let s:cpo_save = &cpo54try55 set cpo&vim56 57 " Start of Doxygen syntax highlighting:58 "59 60 " C/C++ Style line comments61 syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+ containedin=phpRegion62 syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion63 syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+64 syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion65 66 syn region doxygenComment start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO,doxygenLeadingWhite keepend fold containedin=phpRegion67 syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenLeadingLWhite,doxygenStartL,@Spell keepend skipwhite skipnl nextgroup=doxygenCommentWhite2 fold containedin=phpRegion68 syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl fold containedin=phpRegion69 syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion70 syn region doxygenComment start=+/\*@\ze[{}]+ end=+\*/+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion71 72 " Single line brief followed by multiline comment.73 syn match doxygenCommentWhite2 +\_s*\ze/\*\(\*/\)\@![*!]+ contained nextgroup=doxygenComment274 syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend fold75 " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.76 syn match doxygenSyncStart2 +[^*/]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenSkipComment,doxygenStartSkip2 skipwhite skipnl77 78 " Skip empty lines at the start for when comments start on the 2nd/3rd line.79 syn match doxygenStartSkip2 +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl80 syn match doxygenStartSkip2 +^\s*\*$+ contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl81 syn match doxygenStart2 +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenStartSkip2 skipwhite skipnl82 83 84 " Match the Starting pattern (effectively creating the start of a BNF)85 if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief86 syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl87 syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial88 syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeaingLWhite,doxygenPrevL,doxygenBriefL,doxygenSpecial89 " Match the first sentence as a brief comment90 if ! exists('g:doxygen_end_punctuation')91 let g:doxygen_end_punctuation='[.]'92 endif93 94 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,doxygenContinueCommentWhite,doxygenLeadingWhite,doxygenBriefEndComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipnl nextgroup=doxygenBody'95 96 syn match doxygenBriefEndComment +\*/+ contained97 98 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'99 syn match doxygenPrevL +<+ contained nextgroup=doxygenBriefL,doxygenSpecial skipwhite100 else101 syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl102 syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeadingLWhite,doxygenPrevL,doxygenLine,doxygenSpecial103 syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenLine,doxygenSpecial104 syn region doxygenLine start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@<]+ start=+\<+ end='$' contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend105 syn match doxygenPrevL +<+ contained nextgroup=doxygenLine,doxygenSpecial skipwhite106 107 endif108 109 " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.110 syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl111 " Match an [@\]brief so that it moves to body-mode.112 "113 "114 " syn match doxygenBriefLine contained115 syn match doxygenBriefSpecial contained +[@\\]+ nextgroup=doxygenBriefWord skipwhite116 " syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained117 syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained118 119 120 121" end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+122"syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contains=doxygenContinueCommentWhite,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipwhite keepend matchgroup=xxx123syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ skipwhite keepend matchgroup=xxx contains=@Spell124" syn region doxygenBriefLine matchgroup=xxxy contained start=+\<\k.\++ skip=+^\s*\k+ end=+end+ skipwhite keepend125"doxygenFindBriefSpecial,126 "" syn region doxygenSpecialMultilineDesc start=+.\++ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend127 128 129 " Match a '<' for applying a comment to the previous element.130 syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkipWhite skipwhite131 132if exists("c_comment_strings")133 " These are anti-Doxygen comments. If there are more than two asterisks or 3 '/'s134 " then turn the comments back into normal C comments.135 syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cCommentString,cCharacter,cNumbersCom,cSpaceError136 syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError137else138 syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cSpaceError139 syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cSpaceError140endif141 142 " Special commands at the start of the area: starting with '@' or '\'143 syn region doxygenStartSpecial contained start=+[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=doxygenSpecial nextgroup=doxygenSkipComment skipnl keepend144 syn match doxygenSkipComment contained +^\s*\*/\@!+ nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenPage skipwhite145 146 "syn region doxygenBodyBit contained start=+$+147 148 " The main body of a doxygen comment.149 syn region doxygenBody contained start=+\(/\*[*!]\)\@<!<\|[^<]\|$+ matchgroup=doxygenEndComment end=+\*/+re=e-2,me=e-2 contains=doxygenContinueCommentWhite,doxygenTODO,doxygenSpecial,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell150 151 " These allow the skipping of comment continuation '*' characters.152 syn match doxygenContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenContinueComment153 syn match doxygenContinueComment contained +\*/\@!+154 155 " Catch a Brief comment without punctuation - flag it as an error but156 " make sure the end comment is picked up also.157 syn match doxygenErrorComment contained +\*/+158 159 160 " Skip empty lines at the start for when comments start on the 2nd/3rd line.161 if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief162 syn match doxygenStartSkipWhite +^\s*\ze\*/\@!+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl163 "syn match doxygenStartSkipWhite +^\s*\ze\*$+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl164 else165 syn match doxygenStartSkipWhite +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage,doxygenBody skipwhite skipnl166 syn match doxygenStartSkipWhite +^\s*\*$+ contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage,doxygenBody skipwhite skipnl167 endif168 169 " Create the single word matching special identifiers.170 171 fun! s:DxyCreateSmallSpecial( kword, name )172 173 let mx='[-:0-9A-Za-z_%=&+*/!~>|]\@<!\([-0-9A-Za-z_%=+*/!~>|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,]\w\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+'174 exe 'syn region doxygenSpecial'.a:name.'Word contained start=+'.a:kword.'+ end=+\(\_s\+'.mx.'\)\@<=[-a-zA-Z_0-9+*/^%|~!=&\\]\@!+ skipwhite contains=doxygenContinueCommentWhite,doxygen'.a:name.'Word'175 exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial,@Spell keepend'176 endfun177 call s:DxyCreateSmallSpecial('p', 'Code')178 call s:DxyCreateSmallSpecial('c', 'Code')179 call s:DxyCreateSmallSpecial('b', 'Bold')180 call s:DxyCreateSmallSpecial('e', 'Emphasised')181 call s:DxyCreateSmallSpecial('em', 'Emphasised')182 call s:DxyCreateSmallSpecial('a', 'Argument')183 call s:DxyCreateSmallSpecial('ref', 'Ref')184 delfun s:DxyCreateSmallSpecial185 186 syn match doxygenSmallSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\>\|\<link\>\|f\$\|[$\\&<>#]\)\@=+ nextgroup=doxygenOtherLink,doxygenHyperLink,doxygenHashLink,doxygenFormula,doxygenSymbol,doxygenSpecial.*Word187 188 " Now for special characters189 syn match doxygenSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\|\<link\>\>\|\<f\$\|[$\\&<>#]\)\@!+ nextgroup=doxygenParam,doxygenTParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion190 " doxygenOtherLink,doxygenSymbol,doxygenFormula,doxygenErrorSpecial,doxygenSpecial.*Word191 "192 syn match doxygenGroupDefine contained +@\@<=[{}]+193 syn match doxygenGroupDefineSpecial contained +@\ze[{}]+194 195 syn match doxygenErrorSpecial contained +\s+196 197 " Match parameters and retvals (highlighting the first word as special).198 syn match doxygenParamDirection contained "\v\[(\s*in>((]\s*\[|\s*,\s*)out>)=|out>((]\s*\[|\s*,\s*)in>)=)\]" nextgroup=doxygenParamName skipwhite199 syn keyword doxygenParam contained param nextgroup=doxygenParamName,doxygenParamDirection skipwhite200 syn keyword doxygenTParam contained tparam nextgroup=doxygenParamName skipwhite201 syn match doxygenParamName contained +[A-Za-z0-9_:]\++ nextgroup=doxygenSpecialMultilineDesc skipwhite202 syn keyword doxygenRetval contained retval throw throws exception nextgroup=doxygenReturnValue skipwhite203 syn match doxygenReturnValue contained +\S\++ nextgroup=doxygenSpecialMultilineDesc skipwhite204 205 " Match one line identifiers.206 syn keyword doxygenOther contained addindex anchor207 \ dontinclude endhtmlonly endlatexonly showinitializer hideinitializer208 \ example htmlonly image include includelineno ingroup latexonly line209 \ overload relates related relatesalso relatedalso sa skip skipline210 \ until verbinclude version addtogroup htmlinclude copydoc dotfile211 \ xmlonly endxmlonly212 \ nextgroup=doxygenSpecialOnelineDesc copybrief copydetails copyright dir extends213 \ implements214 215 syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\<code\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endcode\>+ contains=doxygenCodeRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell216 syn match doxygenCodeRegionSpecial contained +[\\@]\(endcode\>\)\@=+217 218 syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell219 syn match doxygenVerbatimRegionSpecial contained +[\\@]\(endverbatim\>\)\@=+220 221 if exists('b:current_syntax')222 let b:doxygen_syntax_save=b:current_syntax223 unlet b:current_syntax224 endif225 226 syn include @Dotx syntax/dot.vim227 228 if exists('b:doxygen_syntax_save')229 let b:current_syntax=b:doxygen_syntax_save230 unlet b:doxygen_syntax_save231 else232 unlet b:current_syntax233 endif234 235 syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueCommentWhite,@NoSpell,@Dotx236 syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+237 238 " Match single line identifiers.239 syn keyword doxygenBOther contained class enum file fn mainpage interface240 \ namespace struct typedef union var def name241 \ nextgroup=doxygenSpecialTypeOnelineDesc242 243 syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine244 syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc245 " Match the start of other multiline comments.246 syn keyword doxygenOther contained arg author authors date deprecated li return returns result see invariant note post pre remarks since test internal nextgroup=doxygenSpecialMultilineDesc247 syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc248 syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc249 syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc250 251 " Handle \link, \endlink, highlighting the link-to and the link text bits separately.252 syn region doxygenOtherLink matchgroup=doxygenOther start=+\<link\>+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueCommentWhite,doxygenLinkError,doxygenEndlinkSpecial253 syn match doxygenEndlinkSpecial contained +[\\@]\zeendlink\>+254 255 syn match doxygenLinkWord "[_a-zA-Z:#()][_a-z0-9A-Z:#()]*\>" contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment256 syn match doxygenLinkRest +[^*@\\]\|\*/\@!\|[@\\]\(endlink\>\)\@!+ contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment257 syn match doxygenContinueLinkComment contained +^\s*\*\=[^/]+me=e-1 nextgroup=doxygenLinkRest258 syn match doxygenLinkError "\*/" contained259 " #Link highlighting.260 syn match doxygenHashLink /\(\h\w*\)\?#\(\.\w\@=\|\w\+\|::\|()\)\+/ contained contains=doxygenHashSpecial261 syn match doxygenHashSpecial /#/ contained262 syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained263 264 " Handle \page. This does not use doxygenBrief.265 syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage266 syn keyword doxygenPagePage page contained skipwhite nextgroup=doxygenPageIdent267 syn region doxygenPageDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenBody268 syn match doxygenPageIdent "\<\w\+\>" contained nextgroup=doxygenPageDesc269 270 " Handle section271 syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent272 syn region doxygenSpecialSectionDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueCommentWhite273 syn match doxygenSpecialIdent "\<\w\+\>" contained nextgroup=doxygenSpecialSectionDesc274 275 " Does the one-line description for the one-line type identifiers.276 syn region doxygenSpecialTypeOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend277 syn region doxygenSpecialOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend278 279 " Handle the multiline description for the multiline type identifiers.280 " Continue until an 'empty' line (can contain a '*' continuation) or until the281 " next whole-line @ command \ command.282 syn region doxygenSpecialMultilineDesc start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend283 284" syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite285 syn match doxygenSpecialContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenSpecialContinueComment286 syn match doxygenSpecialContinueComment contained +\*/\@!+287 288 289 " Handle special cases 'bold' and 'group'290 syn keyword doxygenBold contained bold nextgroup=doxygenSpecialHeading291 syn keyword doxygenBriefWord contained brief nextgroup=doxygenBriefLine skipwhite292 syn match doxygenSpecialHeading +.\++ contained skipwhite293 syn keyword doxygenGroup contained group nextgroup=doxygenGroupName skipwhite294 syn keyword doxygenGroupName contained +\k\++ nextgroup=doxygenSpecialOnelineDesc skipwhite295 296 " Handle special symbol identifiers @$, @\, @$ etc297 syn match doxygenSymbol contained +[$\\&<>#n]+298 299 " Simplistic handling of formula regions300 syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\$+ end=+[@\\]f\$+ contains=doxygenFormulaSpecial,doxygenFormulaOperator301 syn match doxygenFormulaSpecial contained +[@\\]\(f[^$]\|[^f]\)+me=s+1 nextgroup=doxygenFormulaKeyword,doxygenFormulaEscaped302 syn match doxygenFormulaEscaped contained "."303 syn match doxygenFormulaKeyword contained "[a-z]\+"304 syn match doxygenFormulaOperator contained +[_^]+305 306 syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\[+ end=+[@\\]f]+ contains=doxygenFormulaSpecial,doxygenFormulaOperator,doxygenAtom307 syn region doxygenAtom contained transparent matchgroup=doxygenFormulaOperator start=+{+ end=+}+ contains=doxygenAtom,doxygenFormulaSpecial,doxygenFormulaOperator308 309 " Add TODO highlighting.310 syn keyword doxygenTODO contained TODO README XXX FIXME311 312 " Supported HTML subset. Not perfect, but okay.313 syn case ignore314 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,doxygenContinueCommentWhite,doxygenHtmlVar315 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 skipwhite316 syn keyword doxygenHtmlVar contained src alt longdesc name height width usemap ismap href type nextgroup=doxygenHtmlEqu skipwhite317 syn match doxygenHtmlEqu contained +=+ nextgroup=doxygenHtmlExpr skipwhite318 syn match doxygenHtmlExpr contained +"\(\\.\|[^"]\)*"\|'\(\\.\|[^']\)*'+ nextgroup=doxygenHtmlVar skipwhite319 syn case match320 syn match doxygenHtmlSpecial contained "&\(copy\|quot\|[AEIOUYaeiouy]uml\|[AEIOUYaeiouy]acute\|[AEIOUaeiouy]grave\|[AEIOUaeiouy]circ\|[ANOano]tilde\|szlig\|[Aa]ring\|nbsp\|gt\|lt\|amp\);"321 322 syn cluster doxygenHtmlGroup contains=doxygenHtmlCode,doxygenHtmlBold,doxygenHtmlUnderline,doxygenHtmlItalic,doxygenHtmlSpecial,doxygenHtmlTag,doxygenHtmlLink323 324 syn cluster doxygenHtmlTop contains=@Spell,doxygenHtmlSpecial,doxygenHtmlTag,doxygenContinueCommentWhite325 " Html Support326 syn region doxygenHtmlLink contained start=+<[aA]\>\s*\(\n\s*\*\s*\)\=\(\(name\|href\)=\("[^"]*"\|'[^']*'\)\)\=\s*>+ end=+</[aA]>+me=e-4 contains=@doxygenHtmlTop327 hi link doxygenHtmlLink Underlined328 329 syn region doxygenHtmlBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell330 syn region doxygenHtmlBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell331 syn region doxygenHtmlBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell332 syn region doxygenHtmlBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell333 syn region doxygenHtmlBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell334 syn region doxygenHtmlBoldUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell335 syn region doxygenHtmlBoldUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell336 syn region doxygenHtmlBoldItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell337 338 syn region doxygenHtmlUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBold,doxygenHtmlUnderlineItalic,@Spell339 syn region doxygenHtmlUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell340 syn region doxygenHtmlUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell341 syn region doxygenHtmlUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell342 syn region doxygenHtmlUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell343 syn region doxygenHtmlUnderlineItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell344 syn region doxygenHtmlUnderlineItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell345 syn region doxygenHtmlUnderlineBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell346 syn region doxygenHtmlUnderlineBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell347 348 syn region doxygenHtmlItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBold,doxygenHtmlItalicUnderline,@Spell349 syn region doxygenHtmlItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell350 syn region doxygenHtmlItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell351 syn region doxygenHtmlItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell352 syn region doxygenHtmlItalicBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,@Spell353 syn region doxygenHtmlItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicUnderlineBold,@Spell354 syn region doxygenHtmlItalicUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell355 syn region doxygenHtmlItalicUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell356 357 syn region doxygenHtmlCode contained start="\c<code\>" end="\c</code>"me=e-7 contains=@doxygenHtmlTop,@NoSpell358 359 " Prevent the doxygen contained matches from leaking into the c/rc groups.360 syn cluster cParenGroup add=doxygen.*361 syn cluster cParenGroup remove=doxygenComment,doxygenCommentL362 syn cluster cPreProcGroup add=doxygen.*363 syn cluster cMultiGroup add=doxygen.*364 syn cluster rcParenGroup add=doxygen.*365 syn cluster rcParenGroup remove=doxygenComment,doxygenCommentL366 syn cluster rcGroup add=doxygen.*367 368 let s:my_syncolor=0369 if !exists(':SynColor')370 command -nargs=+ SynColor hi def <args>371 let s:my_syncolor=1372 endif373 374 let s:my_synlink=0375 if !exists(':SynLink')376 command -nargs=+ SynLink hi def link <args>377 let s:my_synlink=1378 endif379 380 try381 "let did_doxygen_syntax_inits = &background382 hi doxygen_Dummy guifg=black383 384 fun! s:Doxygen_Hilights_Base()385 SynLink doxygenHtmlSpecial Special386 SynLink doxygenHtmlVar Type387 SynLink doxygenHtmlExpr String388 389 SynLink doxygenSmallSpecial SpecialChar390 391 SynLink doxygenSpecialCodeWord doxygenSmallSpecial392 SynLink doxygenSpecialBoldWord doxygenSmallSpecial393 SynLink doxygenSpecialEmphasisedWord doxygenSmallSpecial394 SynLink doxygenSpecialArgumentWord doxygenSmallSpecial395 396 " SynColor doxygenFormulaKeyword cterm=bold ctermfg=DarkMagenta guifg=DarkMagenta gui=bold397 SynLink doxygenFormulaKeyword Keyword398 "SynColor doxygenFormulaEscaped ctermfg=DarkMagenta guifg=DarkMagenta gui=bold399 SynLink doxygenFormulaEscaped Special400 SynLink doxygenFormulaOperator Operator401 SynLink doxygenFormula Statement402 SynLink doxygenSymbol Constant403 SynLink doxygenSpecial Special404 SynLink doxygenFormulaSpecial Special405 "SynColor doxygenFormulaSpecial ctermfg=DarkBlue guifg=DarkBlue406 endfun407 call s:Doxygen_Hilights_Base()408 409 fun! s:Doxygen_Hilights()410 " Pick a sensible default for 'codeword'.411 let font=''412 if exists('g:doxygen_codeword_font')413 if g:doxygen_codeword_font !~ '\<\k\+='414 let font='font='.g:doxygen_codeword_font415 else416 let font=g:doxygen_codeword_font417 endif418 else419 " Try and pick a font (only some platforms have been tested).420 if has('gui_running')421 if has('gui_gtk2')422 if &guifont == ''423 let font="font='FreeSerif 12'"424 else425 let font="font='".substitute(&guifont, '^.\{-}\(\d\+\)$', 'FreeSerif \1','')."'"426 endif427 428 elseif has('gui_win32') || has('gui_win16') || has('gui_win95')429 430 if exists('g:doxygen_use_bitsream_vera') && g:doxygen_use_bitsream_vera431 let font_base='Bitstream_Vera_Sans_Mono'432 else433 let font_base='Lucida_Console'434 endif435 if &guifont == ''436 let font='font='.font_base.':h10'437 else438 let font='font='.matchstr(substitute(&guifont, '^[^:]*', font_base,''),'[^,]*')439 endif440 elseif has('gui_athena') || has('gui_gtk') || &guifont=~'^\(-[^-]\+\)\{14}'441 if &guifont == ''442 let font='font=-b&h-lucidatypewriter-medium-r-normal-*-*-140-*-*-m-*-iso8859-1'443 else444 " let font='font='.substitute(&guifont,'^\(-[^-]\+\)\{7}-\([0-9]\+\).*', '-b\&h-lucidatypewriter-medium-r-normal-*-*-\2-*-*-m-*-iso8859-1','')445 " The above line works, but it is hard to expect the combination of446 " the two fonts will look good.447 endif448 elseif has('gui_kde')449 " let font='font=Bitstream\ Vera\ Sans\ Mono/12/-1/5/50/0/0/0/0/0'450 endif451 endif452 endif453 if font=='' | let font='gui=bold' | endif454 exe 'SynColor doxygenCodeWord term=bold cterm=bold '.font455 if (exists('g:doxygen_enhanced_color') && g:doxygen_enhanced_color) || (exists('g:doxygen_enhanced_colour') && g:doxygen_enhanced_colour)456 if &background=='light'457 SynColor doxygenComment ctermfg=DarkRed guifg=DarkRed458 SynColor doxygenBrief cterm=bold ctermfg=Cyan guifg=DarkBlue gui=bold459 SynColor doxygenBody ctermfg=DarkBlue guifg=DarkBlue460 SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=DarkRed guifg=firebrick3 gui=bold461 SynColor doxygenBOther cterm=bold ctermfg=DarkMagenta guifg=#aa50aa gui=bold462 SynColor doxygenParam ctermfg=DarkGray guifg=#aa50aa463 SynColor doxygenParamName cterm=italic ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=italic,bold464 SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=DarkCyan guifg=DodgerBlue3 gui=bold465 SynColor doxygenSpecialHeading cterm=bold ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=bold466 SynColor doxygenPrev ctermfg=DarkGreen guifg=DarkGreen467 else468 SynColor doxygenComment ctermfg=LightRed guifg=LightRed469 SynColor doxygenBrief cterm=bold ctermfg=Cyan ctermbg=darkgrey guifg=LightBlue gui=Bold,Italic470 SynColor doxygenBody ctermfg=Cyan guifg=LightBlue471 SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=Red guifg=firebrick3 gui=bold472 SynColor doxygenBOther cterm=bold ctermfg=Magenta guifg=#aa50aa gui=bold473 SynColor doxygenParam ctermfg=LightGray guifg=LightGray474 SynColor doxygenParamName cterm=italic ctermfg=LightBlue guifg=LightBlue gui=italic,bold475 SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=LightCyan guifg=LightCyan gui=bold476 SynColor doxygenSpecialHeading cterm=bold ctermfg=LightBlue guifg=LightBlue gui=bold477 SynColor doxygenPrev ctermfg=LightGreen guifg=LightGreen478 endif479 SynLink doxygenValue doxygenParamName480 else481 SynLink doxygenComment SpecialComment482 SynLink doxygenBrief Statement483 SynLink doxygenBody Comment484 SynLink doxygenSpecialTypeOnelineDesc Statement485 SynLink doxygenBOther Constant486 SynLink doxygenParam SpecialComment487 SynLink doxygenParamName Underlined488 SynLink doxygenSpecialOnelineDesc Statement489 SynLink doxygenSpecialHeading Statement490 SynLink doxygenPrev SpecialComment491 SynLink doxygenValue Constant492 endif493 SynLink doxygenTParam doxygenParam494 495 endfun496 497 call s:Doxygen_Hilights()498 499 syn match doxygenLeadingWhite +\(^\s*\*\)\@<=\s*+ contained500 501 " This is still a proposal, but it is probably fine. However, it doesn't502 " work when 'syntax' is set in a modeline, catch the security error.503 try504 aug doxygengroup505 au!506 au Syntax UserColor_reset nested call s:Doxygen_Hilights_Base()507 au Syntax UserColor_{on,reset,enable} nested call s:Doxygen_Hilights()508 aug END509 catch /E12:/510 endtry511 512 513 SynLink doxygenBody Comment514 SynLink doxygenLine doxygenBody515 SynLink doxygenTODO Todo516 SynLink doxygenOtherTODO Todo517 SynLink doxygenOtherWARN Todo518 SynLink doxygenOtherBUG Todo519 SynLink doxygenLeadingLWhite doxygenBody520 521 SynLink doxygenErrorSpecial Error522 SynLink doxygenErrorEnd Error523 SynLink doxygenErrorComment Error524 SynLink doxygenLinkError Error525 SynLink doxygenBriefSpecial doxygenSpecial526 SynLink doxygenHashSpecial doxygenSpecial527 SynLink doxygenGroupDefineSpecial doxygenSpecial528 SynLink doxygenEndlinkSpecial doxygenSpecial529 SynLink doxygenCodeRegionSpecial doxygenSpecial530 SynLink doxygenVerbatimRegionSpecial doxygenSpecial531 SynLink doxygenDotRegionSpecial doxygenSpecial532 SynLink doxygenGroupDefine doxygenParam533 534 SynLink doxygenSpecialMultilineDesc doxygenSpecialOnelineDesc535 SynLink doxygenFormulaEnds doxygenSpecial536 SynLink doxygenBold doxygenParam537 SynLink doxygenBriefWord doxygenParam538 SynLink doxygenRetval doxygenParam539 SynLink doxygenOther doxygenParam540 SynLink doxygenStart doxygenComment541 SynLink doxygenStart2 doxygenStart542 SynLink doxygenComment2 doxygenComment543 SynLink doxygenCommentL doxygenComment544 SynLink doxygenContinueComment doxygenComment545 SynLink doxygenSpecialContinueComment doxygenComment546 SynLink doxygenSkipComment doxygenComment547 SynLink doxygenEndComment doxygenComment548 SynLink doxygenStartL doxygenComment549 SynLink doxygenBriefEndComment doxygenComment550 SynLink doxygenPrevL doxygenPrev551 SynLink doxygenBriefL doxygenBrief552 SynLink doxygenBriefLine doxygenBrief553 SynLink doxygenHeaderLine doxygenSpecialHeading554 SynLink doxygenCommentWhite Normal555 SynLink doxygenCommentWhite2 doxygenCommentWhite556 SynLink doxygenContinueCommentWhite doxygenCommentWhite557 SynLink doxygenStartSkipWhite doxygenContinueCommentWhite558 SynLink doxygenLinkWord doxygenParamName559 SynLink doxygenLinkRest doxygenSpecialMultilineDesc560 SynLink doxygenHyperLink doxygenLinkWord561 SynLink doxygenHashLink doxygenLinkWord562 SynLink doxygenReturnValue doxygenValue563 564 SynLink doxygenPage doxygenSpecial565 SynLink doxygenPagePage doxygenBOther566 SynLink doxygenPageIdent doxygenParamName567 SynLink doxygenPageDesc doxygenSpecialTypeOnelineDesc568 569 SynLink doxygenSpecialIdent doxygenPageIdent570 SynLink doxygenSpecialSectionDesc doxygenSpecialMultilineDesc571 572 SynLink doxygenSpecialRefWord doxygenOther573 SynLink doxygenRefWord doxygenPageIdent574 SynLink doxygenContinueLinkComment doxygenComment575 576 SynLink doxygenHtmlCh Function577 SynLink doxygenHtmlCmd Statement578 SynLink doxygenHtmlBoldItalicUnderline doxygenHtmlBoldUnderlineItalic579 SynLink doxygenHtmlUnderlineBold doxygenHtmlBoldUnderline580 SynLink doxygenHtmlUnderlineItalicBold doxygenHtmlBoldUnderlineItalic581 SynLink doxygenHtmlUnderlineBoldItalic doxygenHtmlBoldUnderlineItalic582 SynLink doxygenHtmlItalicUnderline doxygenHtmlUnderlineItalic583 SynLink doxygenHtmlItalicBold doxygenHtmlBoldItalic584 SynLink doxygenHtmlItalicBoldUnderline doxygenHtmlBoldUnderlineItalic585 SynLink doxygenHtmlItalicUnderlineBold doxygenHtmlBoldUnderlineItalic586 SynLink doxygenHtmlLink Underlined587 588 SynLink doxygenParamDirection StorageClass589 590 591 if !exists("doxygen_my_rendering") && !exists("html_my_rendering")592 SynColor doxygenBoldWord term=bold cterm=bold gui=bold593 SynColor doxygenEmphasisedWord term=italic cterm=italic gui=italic594 SynLink doxygenArgumentWord doxygenEmphasisedWord595 SynLink doxygenHtmlCode doxygenCodeWord596 SynLink doxygenHtmlBold doxygenBoldWord597 SynColor doxygenHtmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline598 SynColor doxygenHtmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic599 SynColor doxygenHtmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline600 SynColor doxygenHtmlUnderline term=underline cterm=underline gui=underline601 SynColor doxygenHtmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline602 SynColor doxygenHtmlItalic term=italic cterm=italic gui=italic603 endif604 605 finally606 if s:my_synlink | delcommand SynLink | endif607 if s:my_syncolor | delcommand SynColor | endif608 endtry609 610 if &syntax=='idl'611 syn cluster idlCommentable add=doxygenComment,doxygenCommentL612 endif613 614 "syn sync clear615 "syn sync maxlines=500616 "syn sync minlines=50617 syn sync match doxygenComment groupthere cComment "/\@<!/\*"618 syn sync match doxygenSyncComment grouphere doxygenComment "/\@<!/\*[*!]"619 "syn sync match doxygenSyncComment grouphere doxygenComment "/\*[*!]" contains=doxygenStart,doxygenTODO keepend620 syn sync match doxygenSyncEndComment groupthere NONE "\*/"621 622 if !exists('b:current_syntax')623 let b:current_syntax = "doxygen"624 else625 let b:current_syntax = b:current_syntax.'.doxygen'626 endif627 628finally629 let &cpo = s:cpo_save630 unlet s:cpo_save631endtry632let suppress_doxygen=1633" vim:et sw=2 sts=2634 