Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
doxygen.vim634 linesDownload Raw Back to syntax
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 
codekingpro/portable-devtools · Team Ai