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 if exists('b:current_syntax') 189 let b:doxygen_syntax_save=b:current_syntax 190 unlet b:current_syntax 191 endif 192 193 syn include @Dotx syntax/dot.vim 194 195 if exists('b:doxygen_syntax_save') 196 let b:current_syntax=b:doxygen_syntax_save 197 unlet b:doxygen_syntax_save 198 else 199 unlet b:current_syntax 200 endif 201 202 syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueComment,@Dotx 203 syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+ 204 205 " Match single line identifiers. 206 syn keyword doxygenBOther contained class enum file fn mainpage interface 207 \ namespace struct typedef union var def name 208 \ nextgroup=doxygenSpecialTypeOnelineDesc 209 210 syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine 211 syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc 212 213 syn keyword doxygenOther contained arg author date deprecated li return see invariant note post pre remarks since test nextgroup=doxygenSpecialMultilineDesc 214 syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc 215 syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc 216 syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc 217 218 " Handle \link, \endlink, hilighting the link-to and the link text bits separately. 219 syn region doxygenOtherLink matchgroup=doxygenOther start=+link+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueComment,doxygenLinkError,doxygenEndlinkSpecial 220 syn match doxygenEndlinkSpecial contained +[\\@]\zeendlink\>+ 221 222 syn match doxygenLinkWord "[_a-zA-Z:#()][_a-z0-9A-Z:#()]*\>" contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment 223 syn match doxygenLinkRest +[^*@\\]\|\*/\@!\|[@\\]\(endlink\>\)\@!+ contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment 224 syn match doxygenContinueLinkComment contained +^\s*\*\=[^/]+me=e-1 nextgroup=doxygenLinkRest 225 syn match doxygenLinkError "\*/" contained 226 " #Link hilighting. 227 syn match doxygenHashLink /\([a-zA-Z_][0-9a-zA-Z_]*\)\?#\(\.[0-9a-zA-Z_]\@=\|[a-zA-Z0-9_]\+\|::\|()\)\+/ contained contains=doxygenHashSpecial 228 syn match doxygenHashSpecial /#/ contained 229 syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@]\+/ contained 230 231 " Handle \page. This does not use doxygenBrief. 232 syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage 233 syn keyword doxygenPagePage page contained skipwhite nextgroup=doxygenPageIdent 234 syn region doxygenPageDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenBody 235 syn match doxygenPageIdent "\<[a-zA-Z0-9]\+\>" contained nextgroup=doxygenPageDesc 236 237 " Handle section 238 syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent 239 syn region doxygenSpecialSectionDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueComment 240 syn match doxygenSpecialIdent "\<[a-zA-Z0-9]\+\>" contained nextgroup=doxygenSpecialSectionDesc 241 242 " Does the one-line description for the one-line type identifiers. 243 syn region doxygenSpecialTypeOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend 244 syn region doxygenSpecialOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend 245 246 " Handle the multiline description for the multiline type identifiers. 247 " Continue until an 'empty' line (can contain a '*' continuation) or until the 248 " next whole-line @ command \ command. 249 syn region doxygenSpecialMultilineDesc start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([pcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueComment,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup skipwhite keepend 250 syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite 251 252 " Handle special cases 'bold' and 'group' 253 syn keyword doxygenBold contained bold nextgroup=doxygenSpecialHeading 254 syn keyword doxygenBriefWord contained brief nextgroup=doxygenBriefLine skipwhite 255 syn match doxygenSpecialHeading +.\++ contained skipwhite 256 syn keyword doxygenGroup contained group nextgroup=doxygenGroupName skipwhite 257 syn keyword doxygenGroupName contained +\k\++ nextgroup=doxygenSpecialOnelineDesc skipwhite 258 259 " Handle special symbol identifiers @$, @\, @$ etc 260 syn match doxygenSymbol contained +[$\\&<>#]+ 261 262 " Simplistic handling of formula regions 263 syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\$+ end=+[@\\]f\$+ contains=doxygenFormulaSpecial,doxygenFormulaOperator 264 syn match doxygenFormulaSpecial contained +[@\\]\(f[^$]\|[^f]\)+me=s+1 nextgroup=doxygenFormulaKeyword,doxygenFormulaEscaped 265 syn match doxygenFormulaEscaped contained "." 266 syn match doxygenFormulaKeyword contained "[a-z]\+" 267 syn match doxygenFormulaOperator contained +[_^]+ 268 269 syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\[+ end=+[@\\]f]+ contains=doxygenFormulaSpecial,doxygenFormulaOperator,doxygenAtom 270 syn region doxygenAtom contained transparent matchgroup=doxygenFormulaOperator start=+{+ end=+}+ contains=doxygenAtom,doxygenFormulaSpecial,doxygenFormulaOperator 271 272 " Add TODO hilighting. 273 syn keyword doxygenTODO contained TODO README XXX FIXME 274 275 " Supported HTML subset. Not perfect, but okay. 276 syn case ignore 277 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 278 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 279 syn keyword doxygenHtmlVar contained src alt longdesc name height width usemap ismap href type nextgroup=doxygenHtmlEqu skipwhite 280 syn match doxygenHtmlEqu contained +=+ nextgroup=doxygenHtmlExpr skipwhite 281 syn match doxygenHtmlExpr contained +"\(\\.\|[^"]\)*"\|'\(\\.\|[^']\)*'+ nextgroup=doxygenHtmlVar skipwhite 282 syn case match 283 syn match doxygenHtmlSpecial contained "&\(copy\|quot\|[AEIOUYaeiouy]uml\|[AEIOUYaeiouy]acute\|[AEIOUaeiouy]grave\|[AEIOUaeiouy]circ\|[ANOano]tilde\|szlig\|[Aa]ring\|nbsp\|gt\|lt\|amp\);" 284 285 syn cluster doxygenHtmlGroup contains=doxygenHtmlCode,doxygenHtmlBold,doxygenHtmlUnderline,doxygenHtmlItalic,doxygenHtmlSpecial,doxygenHtmlTag,doxygenHtmlLink 286 287 syn cluster doxygenHtmlTop contains=@Spell,doxygenHtmlSpecial,doxygenHtmlTag,doxygenContinueComment 288 " Html Support 289 syn region doxygenHtmlLink contained start=+<[aA]\>\s*\(\n\s*\*\s*\)\=\(\(name\|href\)=\("[^"]*"\|'[^']*'\)\)\=\s*>+ end=+</[aA]>+me=e-4 contains=@doxygenHtmlTop 290 hi link doxygenHtmlLink Underlined 291 292 syn region doxygenHtmlBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic 293 syn region doxygenHtmlBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic 294 syn region doxygenHtmlBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic 295 syn region doxygenHtmlBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline 296 syn region doxygenHtmlBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline 297 syn region doxygenHtmlBoldUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop 298 syn region doxygenHtmlBoldUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop 299 syn region doxygenHtmlBoldItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic 300 301 syn region doxygenHtmlUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBold,doxygenHtmlUnderlineItalic 302 syn region doxygenHtmlUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic 303 syn region doxygenHtmlUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic 304 syn region doxygenHtmlUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,htmUnderlineItalicBold 305 syn region doxygenHtmlUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,htmUnderlineItalicBold 306 syn region doxygenHtmlUnderlineItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop 307 syn region doxygenHtmlUnderlineItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop 308 syn region doxygenHtmlUnderlineBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop 309 syn region doxygenHtmlUnderlineBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop 310 311 syn region doxygenHtmlItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBold,doxygenHtmlItalicUnderline 312 syn region doxygenHtmlItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop 313 syn region doxygenHtmlItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline 314 syn region doxygenHtmlItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline 315 syn region doxygenHtmlItalicBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop 316 syn region doxygenHtmlItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicUnderlineBold 317 syn region doxygenHtmlItalicUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop 318 syn region doxygenHtmlItalicUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop 319 320 syn region doxygenHtmlCode contained start="\c<code\>" end="\c</code>"me=e-7 contains=@doxygenHtmlTop 321 322 " Prevent the doxygen contained matches from leaking into the c groups. 323 syn cluster cParenGroup add=doxygen.* 324 syn cluster cParenGroup remove=doxygenComment,doxygenCommentL 325 syn cluster cPreProcGroup add=doxygen.* 326 syn cluster cMultiGroup add=doxygen.* 327 syn cluster rcParenGroup add=doxygen.* 328 syn cluster rcParenGroup remove=doxygenComment,doxygenCommentL 329 syn cluster rcGroup add=doxygen.* 330 331 let s:my_syncolor=0 332 if !exists(':SynColor') 333 command -nargs=+ SynColor hi def <args> 334 let s:my_syncolor=1 335 endif 336 337 let s:my_synlink=0 338 if !exists(':SynLink') 339 command -nargs=+ SynLink hi def link <args> 340 let s:my_synlink=1 341 endif 342 343 try 344 "let did_doxygen_syntax_inits = &background 345 hi doxygen_Dummy guifg=black 346 347 fun! s:Doxygen_Hilights_Base() 348 SynLink doxygenHtmlSpecial Special 349 SynLink doxygenHtmlVar Type 350 SynLink doxygenHtmlExpr String 351 352 SynLink doxygenSmallSpecial SpecialChar 353 354 SynLink doxygenSpecialCodeWord doxygenSmallSpecial 355 SynLink doxygenSpecialBoldWord doxygenSmallSpecial 356 SynLink doxygenSpecialEmphasisedWord doxygenSmallSpecial 357 SynLink doxygenSpecialArgumentWord doxygenSmallSpecial 358 359 " SynColor doxygenFormulaKeyword cterm=bold ctermfg=DarkMagenta guifg=DarkMagenta gui=bold 360 SynLink doxygenFormulaKeyword Keyword 361 "SynColor doxygenFormulaEscaped ctermfg=DarkMagenta guifg=DarkMagenta gui=bold 362 SynLink doxygenFormulaEscaped Special 363 SynLink doxygenFormulaOperator Operator 364 SynLink doxygenFormula Statement 365 SynLink doxygenSymbol Constant 366 SynLink doxygenSpecial Special 367 SynLink doxygenFormulaSpecial Special 368 "SynColor doxygenFormulaSpecial ctermfg=DarkBlue guifg=DarkBlue 369 endfun 370 call s:Doxygen_Hilights_Base() 371 372 fun! s:Doxygen_Hilights() 373 " Pick a sensible default for 'codeword'. 374 let font='' 375 if exists('g:doxygen_codeword_font') 376 if g:doxygen_codeword_font !~ '\<\k\+=' 377 let font='font='.g:doxygen_codeword_font 378 else 379 let font=g:doxygen_codeword_font 380 endif 381 else 382 " Try and pick a font (only some platforms have been tested). 383 if has('gui_running') 384 if has('gui_gtk2') 385 if &guifont == '' 386 let font="font='FreeSerif 12'" 387 else 388 let font="font='".substitute(&guifont, '^.\{-}\([0-9]\+\)$', 'FreeSerif \1','')."'" 389 endif 390 391 elseif has('gui_win32') || has('gui_win16') || has('gui_win95') 392 if &guifont == '' 393 let font='font=Lucida_Console:h10' 394 else 395 let font='font='.substitute(&guifont, '^[^:]*', 'Lucida_Console','') 396 endif 397 elseif has('gui_athena') || has('gui_gtk') || &guifont=~'^\(-[^-]\+\)\{14}' 398 if &guifont == '' 399 let font='font=-b&h-lucidatypewriter-medium-r-normal-*-*-140-*-*-m-*-iso8859-1' 400 else 401 " let font='font='.substitute(&guifont,'^\(-[^-]\+\)\{7}-\([0-9]\+\).*', '-b\&h-lucidatypewriter-medium-r-normal-*-*-\2-*-*-m-*-iso8859-1','') 402 " The above line works, but it is hard to expect the combination of 403 " the two fonts will look good. 404 endif 405 elseif has('gui_kde') 406 " let font='font=Bitstream\ Vera\ Sans\ Mono/12/-1/5/50/0/0/0/0/0' 407 endif 408 endif 409 endif 410 if font=='' | let font='gui=bold' | endif 411 exe 'SynColor doxygenCodeWord term=bold cterm=bold '.font 412 if (exists('g:doxygen_enhanced_color') && g:doxygen_enhanced_color) || (exists('g:doxygen_enhanced_colour') && g:doxygen_enhanced_colour) 413 if &background=='light' 414 SynColor doxygenComment ctermfg=DarkRed guifg=DarkRed 415 SynColor doxygenBrief cterm=bold ctermfg=Cyan guifg=DarkBlue gui=bold 416 SynColor doxygenBody ctermfg=DarkBlue guifg=DarkBlue 417 SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=DarkRed guifg=firebrick3 gui=bold 418 SynColor doxygenBOther cterm=bold ctermfg=DarkMagenta guifg=#aa50aa gui=bold 419 SynColor doxygenParam ctermfg=DarkGray guifg=#aa50aa 420 SynColor doxygenParamName cterm=italic ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=italic,bold 421 SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=DarkCyan guifg=DodgerBlue3 gui=bold 422 SynColor doxygenSpecialHeading cterm=bold ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=bold 423 SynColor doxygenPrev ctermfg=DarkGreen guifg=DarkGreen 424 else 425 SynColor doxygenComment ctermfg=LightRed guifg=LightRed 426 SynColor doxygenBrief cterm=bold ctermfg=Cyan ctermbg=darkgrey guifg=LightBlue gui=Bold,Italic 427 SynColor doxygenBody ctermfg=Cyan guifg=LightBlue 428 SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=Red guifg=firebrick3 gui=bold 429 SynColor doxygenBOther cterm=bold ctermfg=Magenta guifg=#aa50aa gui=bold 430 SynColor doxygenParam ctermfg=LightGray guifg=LightGray 431 SynColor doxygenParamName cterm=italic ctermfg=LightBlue guifg=LightBlue gui=italic,bold 432 SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=LightCyan guifg=LightCyan gui=bold 433 SynColor doxygenSpecialHeading cterm=bold ctermfg=LightBlue guifg=LightBlue gui=bold 434 SynColor doxygenPrev ctermfg=LightGreen guifg=LightGreen 435 endif 436 else 437 SynLink doxygenComment SpecialComment 438 SynLink doxygenBrief Statement 439 SynLink doxygenBody Comment 440 SynLink doxygenSpecialTypeOnelineDesc Statement 441 SynLink doxygenBOther Constant 442 SynLink doxygenParam SpecialComment 443 SynLink doxygenParamName Underlined 444 SynLink doxygenSpecialOnelineDesc Statement 445 SynLink doxygenSpecialHeading Statement 446 SynLink doxygenPrev SpecialComment 447 endif 448 endfun 449 450 call s:Doxygen_Hilights() 451 452 " This is still a proposal, but won't do any harm. 453 aug doxygengroup 454 au! 455 au Syntax UserColor_reset nested call s:Doxygen_Hilights_Base() 456 au Syntax UserColor_{on,reset,enable} nested call s:Doxygen_Hilights() 457 aug END 458 459 460 SynLink doxygenBody Comment 461 SynLink doxygenTODO Todo 462 SynLink doxygenOtherTODO Todo 463 SynLink doxygenOtherWARN Todo 464 SynLink doxygenOtherBUG Todo 465 466 SynLink doxygenErrorSpecial Error 467 SynLink doxygenErrorEnd Error 468 SynLink doxygenErrorComment Error 469 SynLink doxygenLinkError Error 470 SynLink doxygenBriefSpecial doxygenSpecial 471 SynLink doxygenHashSpecial doxygenSpecial 472 SynLink doxygenGroupDefineSpecial doxygenSpecial 473 SynLink doxygenEndlinkSpecial doxygenSpecial 474 SynLink doxygenCodeRegionSpecial doxygenSpecial 475 SynLink doxygenVerbatimRegionSpecial doxygenSpecial 476 SynLink doxygenGroupDefine doxygenParam 477 478 SynLink doxygenSpecialMultilineDesc doxygenSpecialOnelineDesc 479 SynLink doxygenFormulaEnds doxygenSpecial 480 SynLink doxygenBold doxygenParam 481 SynLink doxygenBriefWord doxygenParam 482 SynLink doxygenRetval doxygenParam 483 SynLink doxygenOther doxygenParam 484 SynLink doxygenStart doxygenComment 485 SynLink doxygenStart2 doxygenStart 486 SynLink doxygenComment2 doxygenComment 487 SynLink doxygenCommentL doxygenComment 488 SynLink doxygenContinueComment doxygenComment 489 SynLink doxygenSpecialContinueComment doxygenComment 490 SynLink doxygenSkipComment doxygenComment 491 SynLink doxygenEndComment doxygenComment 492 SynLink doxygenStartL doxygenComment 493 SynLink doxygenBriefEndComment doxygenComment 494 SynLink doxygenPrevL doxygenPrev 495 SynLink doxygenBriefL doxygenBrief 496 SynLink doxygenBriefLine doxygenBrief 497 SynLink doxygenHeaderLine doxygenSpecialHeading 498 SynLink doxygenStartSkip doxygenContinueComment 499 SynLink doxygenLinkWord doxygenParamName 500 SynLink doxygenLinkRest doxygenSpecialMultilineDesc 501 SynLink doxygenHyperLink doxygenLinkWord 502 SynLink doxygenHashLink doxygenLinkWord 503 504 SynLink doxygenPage doxygenSpecial 505 SynLink doxygenPagePage doxygenBOther 506 SynLink doxygenPageIdent doxygenParamName 507 SynLink doxygenPageDesc doxygenSpecialTypeOnelineDesc 508 509 SynLink doxygenSpecialIdent doxygenPageIdent 510 SynLink doxygenSpecialSectionDesc doxygenSpecialMultilineDesc 511 512 SynLink doxygenSpecialRefWord doxygenOther 513 SynLink doxygenRefWord doxygenPageIdent 514 SynLink doxygenContinueLinkComment doxygenComment 515 516 SynLink doxygenHtmlCh Function 517 SynLink doxygenHtmlCmd Statement 518 SynLink doxygenHtmlBoldItalicUnderline doxygenHtmlBoldUnderlineItalic 519 SynLink doxygenHtmlUnderlineBold doxygenHtmlBoldUnderline 520 SynLink doxygenHtmlUnderlineItalicBold doxygenHtmlBoldUnderlineItalic 521 SynLink doxygenHtmlUnderlineBoldItalic doxygenHtmlBoldUnderlineItalic 522 SynLink doxygenHtmlItalicUnderline doxygenHtmlUnderlineItalic 523 SynLink doxygenHtmlItalicBold doxygenHtmlBoldItalic 524 SynLink doxygenHtmlItalicBoldUnderline doxygenHtmlBoldUnderlineItalic 525 SynLink doxygenHtmlItalicUnderlineBold doxygenHtmlBoldUnderlineItalic 526 SynLink doxygenHtmlLink Underlined 527 528 SynLink doxygenParamDirection StorageClass 529 530 531 if !exists("doxygen_my_rendering") && !exists("html_my_rendering") 532 SynColor doxygenBoldWord term=bold cterm=bold gui=bold 533 SynColor doxygenEmphasisedWord term=italic cterm=italic gui=italic 534 SynLink doxygenArgumentWord doxygenEmphasisedWord 535 SynLink doxygenHtmlCode doxygenCodeWord 536 SynLink doxygenHtmlBold doxygenBoldWord 537 SynColor doxygenHtmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline 538 SynColor doxygenHtmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic 539 SynColor doxygenHtmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline 540 SynColor doxygenHtmlUnderline term=underline cterm=underline gui=underline 541 SynColor doxygenHtmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline 542 SynColor doxygenHtmlItalic term=italic cterm=italic gui=italic 543 endif 544 545 finally 546 if s:my_synlink | delcommand SynLink | endif 547 if s:my_syncolor | delcommand SynColor | endif 548 endtry 549 550 if &syntax=='idl' 551 syn cluster idlCommentable add=doxygenComment,doxygenCommentL 552 endif 553 554 "syn sync clear 555 "syn sync maxlines=500 556 "syn sync minlines=50 557 syn sync match doxygenComment groupthere cComment "/\@<!/\*" 558 syn sync match doxygenSyncComment grouphere doxygenComment "/\@<!/\*[*!]" 559 "syn sync match doxygenSyncComment grouphere doxygenComment "/\*[*!]" contains=doxygenStart,doxygenTODO keepend 560 syn sync match doxygenSyncEndComment groupthere NONE "\*/" 561 562 if !exists('b:current_syntax') 563 let b:current_syntax = "doxygen" 564 else 565 let b:current_syntax = b:current_syntax.'.doxygen' 566 endif 567 568finally 569 let &cpo = s:cpo_save 570 unlet s:cpo_save 571endtry 572 573" vim:et sw=2 sts=2 574