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