blob: 167b17cd0f5e96e6086626499a66c91b33dd2371 [file] [log] [blame]
Bram Moolenaar6c391a72021-09-09 21:55:11 +02001" DoxyGen syntax highlighting extension for c/c++/idl/java
Bram Moolenaare37d50a2008-08-06 17:06:04 +00002" Language: doxygen on top of c, cpp, idl, java, php
Bram Moolenaarc81e5e72007-05-05 18:24:42 +00003" Maintainer: Michael Geddes <vimmer@frog.wheelycreek.net>
Bram Moolenaarc6249bb2006-04-15 20:25:09 +00004" Author: Michael Geddes
Bram Moolenaar4072ba52020-12-23 13:56:35 +01005" Last Change: December 2020
6" Version: 1.30
Bram Moolenaarc6249bb2006-04-15 20:25:09 +00007"
Bram Moolenaar4072ba52020-12-23 13:56:35 +01008" Copyright 2004-2020 Michael Geddes
Bram Moolenaarc6249bb2006-04-15 20:25:09 +00009" 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"
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000016" There are two variables that control the syntax highlighting produced by this
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000017" script:
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000018" doxygen_enhanced_colour - Use the (non-standard) original colours designed
19" for this highlighting.
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000020" doxygen_my_rendering - Disable the HTML bold/italic/underline rendering.
21"
22" A brief description without '.' or '!' will cause the end comment
23" character to be marked as an error. You can define the colour of this using
24" the highlight doxygenErrorComment.
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000025" A \link without an \endlink will cause an error highlight on the end-comment.
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000026" This is defined by doxygenLinkError
27"
28" The variable g:doxygen_codeword_font can be set to the guifont for marking \c
29" words - a 'typewriter' like font normally. Spaces must be escaped. It can
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000030" also be set to any highlight attribute. Alternatively, a highlight for doxygenCodeWord
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000031" can be used to override it.
32"
Bram Moolenaare37d50a2008-08-06 17:06:04 +000033" By default, highlighting is done assuming you have the JAVADOC_AUTOBRIEF
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000034" setting turned on in your Doxygen configuration. If you don't, you
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000035" can set the variable g:doxygen_javadoc_autobrief to 0 to have the
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000036" highlighting more accurately reflect the way Doxygen will interpret your
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000037" comments.
38"
Bram Moolenaare37d50a2008-08-06 17:06:04 +000039" Support for cpp, c, idl, doxygen and php.
40"
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000041" Special thanks to: Wu Yongwei, Toby Allsopp
42"
43
44if exists('b:suppress_doxygen')
45 unlet b:suppress_doxygen
46 finish
47endif
48
49if exists('b:current_syntax') && b:current_syntax =~ 'doxygen' && !exists('doxygen_debug_script')
50 finish
51endif
52
53let s:cpo_save = &cpo
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000054try
55 set cpo&vim
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000056
Bram Moolenaar6c391a72021-09-09 21:55:11 +020057 " Start of Doxygen syntax highlighting:
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000058 "
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000059
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000060 " C/C++ Style line comments
Bram Moolenaara2a80162017-11-21 23:09:50 +010061 syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+ containedin=phpRegion
62 syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion
63 syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+
64 syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion
65
66 syn region doxygenComment start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO,doxygenLeadingWhite keepend fold containedin=phpRegion
67 syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenLeadingLWhite,doxygenStartL,@Spell keepend skipwhite skipnl nextgroup=doxygenCommentWhite2 fold containedin=phpRegion
Bram Moolenaare37d50a2008-08-06 17:06:04 +000068 syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl fold containedin=phpRegion
69 syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion
Bram Moolenaara2a80162017-11-21 23:09:50 +010070 syn region doxygenComment start=+/\*@\ze[{}]+ end=+\*/+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000071
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000072 " Single line brief followed by multiline comment.
Bram Moolenaara2a80162017-11-21 23:09:50 +010073 syn match doxygenCommentWhite2 +\_s*\ze/\*\(\*/\)\@![*!]+ contained nextgroup=doxygenComment2
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000074 syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend fold
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000075 " 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 skipnl
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000077
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000078 " Skip empty lines at the start for when comments start on the 2nd/3rd line.
Bram Moolenaara2a80162017-11-21 23:09:50 +010079 syn match doxygenStartSkip2 +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl
80 syn match doxygenStartSkip2 +^\s*\*$+ contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000081 syn match doxygenStart2 +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenStartSkip2 skipwhite skipnl
Bram Moolenaarc6249bb2006-04-15 20:25:09 +000082
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000083
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000084 " Match the Starting pattern (effectively creating the start of a BNF)
85 if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief
Bram Moolenaara2a80162017-11-21 23:09:50 +010086 syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
87 syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial
88 syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeaingLWhite,doxygenPrevL,doxygenBriefL,doxygenSpecial
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000089 " Match the first sentence as a brief comment
90 if ! exists('g:doxygen_end_punctuation')
91 let g:doxygen_end_punctuation='[.]'
92 endif
93
Bram Moolenaara2a80162017-11-21 23:09:50 +010094 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'
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000095
96 syn match doxygenBriefEndComment +\*/+ contained
97
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 skipwhite
Bram Moolenaarb21e5842006-04-16 18:30:08 +0000100 else
Bram Moolenaara2a80162017-11-21 23:09:50 +0100101 syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
102 syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeadingLWhite,doxygenPrevL,doxygenLine,doxygenSpecial
103 syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenLine,doxygenSpecial
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000104 syn region doxygenLine start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@<]+ start=+\<+ end='$' contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend
105 syn match doxygenPrevL +<+ contained nextgroup=doxygenLine,doxygenSpecial skipwhite
106
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000107 endif
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000108
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000109 " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.
Bram Moolenaara2a80162017-11-21 23:09:50 +0100110 syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
111 " Match an [@\]brief so that it moves to body-mode.
112 "
113 "
114 " syn match doxygenBriefLine contained
115 syn match doxygenBriefSpecial contained +[@\\]+ nextgroup=doxygenBriefWord skipwhite
116 " syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
117 syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000118
Bram Moolenaara2a80162017-11-21 23:09:50 +0100119
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=xxx
123syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ skipwhite keepend matchgroup=xxx
124" syn region doxygenBriefLine matchgroup=xxxy contained start=+\<\k.\++ skip=+^\s*\k+ end=+end+ skipwhite keepend
125"doxygenFindBriefSpecial,
126 "" syn region doxygenSpecialMultilineDesc start=+.\++ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend
127
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000128
129 " Match a '<' for applying a comment to the previous element.
Bram Moolenaara2a80162017-11-21 23:09:50 +0100130 syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkipWhite skipwhite
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000131
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000132if exists("c_comment_strings")
133 " These are anti-Doxygen comments. If there are more than two asterisks or 3 '/'s
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000134 " then turn the comments back into normal C comments.
135 syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cCommentString,cCharacter,cNumbersCom,cSpaceError
136 syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000137else
138 syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cSpaceError
139 syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cSpaceError
140endif
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000141
142 " Special commands at the start of the area: starting with '@' or '\'
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000143 syn region doxygenStartSpecial contained start=+[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=doxygenSpecial nextgroup=doxygenSkipComment skipnl keepend
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000144 syn match doxygenSkipComment contained +^\s*\*/\@!+ nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenPage skipwhite
145
146 "syn region doxygenBodyBit contained start=+$+
147
148 " The main body of a doxygen comment.
Bram Moolenaara2a80162017-11-21 23:09:50 +0100149 syn region doxygenBody contained start=+\(/\*[*!]\)\@<!<\|[^<]\|$+ matchgroup=doxygenEndComment end=+\*/+re=e-2,me=e-2 contains=doxygenContinueCommentWhite,doxygenTODO,doxygenSpecial,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000150
151 " These allow the skipping of comment continuation '*' characters.
Bram Moolenaara2a80162017-11-21 23:09:50 +0100152 syn match doxygenContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenContinueComment
153 syn match doxygenContinueComment contained +\*/\@!+
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000154
155 " Catch a Brief comment without punctuation - flag it as an error but
156 " 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_autobrief
Bram Moolenaara2a80162017-11-21 23:09:50 +0100162 syn match doxygenStartSkipWhite +^\s*\ze\*/\@!+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
163 "syn match doxygenStartSkipWhite +^\s*\ze\*$+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000164 else
Bram Moolenaara2a80162017-11-21 23:09:50 +0100165 syn match doxygenStartSkipWhite +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage,doxygenBody skipwhite skipnl
166 syn match doxygenStartSkipWhite +^\s*\*$+ contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage,doxygenBody skipwhite skipnl
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000167 endif
168
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000169 " Create the single word matching special identifiers.
170
171 fun! s:DxyCreateSmallSpecial( kword, name )
172
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100173 let mx='[-:0-9A-Za-z_%=&+*/!~>|]\@<!\([-0-9A-Za-z_%=+*/!~>|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,]\w\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+'
Bram Moolenaara2a80162017-11-21 23:09:50 +0100174 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'
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000175 exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial,@Spell keepend'
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000176 endfun
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000177 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:DxyCreateSmallSpecial
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000185
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000186 syn match doxygenSmallSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\>\|\<link\>\|f\$\|[$\\&<>#]\)\@=+ nextgroup=doxygenOtherLink,doxygenHyperLink,doxygenHashLink,doxygenFormula,doxygenSymbol,doxygenSpecial.*Word
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000187
188 " Now for special characters
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100189 syn match doxygenSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\|\<link\>\>\|\<f\$\|[$\\&<>#]\)\@!+ nextgroup=doxygenParam,doxygenTParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000190 " doxygenOtherLink,doxygenSymbol,doxygenFormula,doxygenErrorSpecial,doxygenSpecial.*Word
191 "
192 syn match doxygenGroupDefine contained +@\@<=[{}]+
193 syn match doxygenGroupDefineSpecial contained +@\ze[{}]+
194
195 syn match doxygenErrorSpecial contained +\s+
196
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000197 " 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 skipwhite
Bram Moolenaara2a80162017-11-21 23:09:50 +0100199 syn keyword doxygenParam contained param nextgroup=doxygenParamName,doxygenParamDirection skipwhite
200 syn keyword doxygenTParam contained tparam nextgroup=doxygenParamName skipwhite
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000201 syn match doxygenParamName contained +[A-Za-z0-9_:]\++ nextgroup=doxygenSpecialMultilineDesc skipwhite
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100202 syn keyword doxygenRetval contained retval throw throws exception nextgroup=doxygenReturnValue skipwhite
203 syn match doxygenReturnValue contained +\S\++ nextgroup=doxygenSpecialMultilineDesc skipwhite
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000204
205 " Match one line identifiers.
206 syn keyword doxygenOther contained addindex anchor
207 \ dontinclude endhtmlonly endlatexonly showinitializer hideinitializer
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100208 \ example htmlonly image include includelineno ingroup latexonly line
209 \ overload relates related relatesalso relatedalso sa skip skipline
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000210 \ until verbinclude version addtogroup htmlinclude copydoc dotfile
211 \ xmlonly endxmlonly
Bram Moolenaara2a80162017-11-21 23:09:50 +0100212 \ nextgroup=doxygenSpecialOnelineDesc copybrief copydetails copyright dir extends
213 \ implements
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000214
Bram Moolenaara2a80162017-11-21 23:09:50 +0100215 syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\<code\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endcode\>+ contains=doxygenCodeRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000216 syn match doxygenCodeRegionSpecial contained +[\\@]\(endcode\>\)\@=+
217
Bram Moolenaara2a80162017-11-21 23:09:50 +0100218 syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000219 syn match doxygenVerbatimRegionSpecial contained +[\\@]\(endverbatim\>\)\@=+
220
Bram Moolenaara2a80162017-11-21 23:09:50 +0100221 if exists('b:current_syntax')
Bram Moolenaareb3593b2006-04-22 22:33:57 +0000222 let b:doxygen_syntax_save=b:current_syntax
223 unlet b:current_syntax
224 endif
225
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000226 syn include @Dotx syntax/dot.vim
Bram Moolenaareb3593b2006-04-22 22:33:57 +0000227
Bram Moolenaara2a80162017-11-21 23:09:50 +0100228 if exists('b:doxygen_syntax_save')
Bram Moolenaareb3593b2006-04-22 22:33:57 +0000229 let b:current_syntax=b:doxygen_syntax_save
230 unlet b:doxygen_syntax_save
231 else
232 unlet b:current_syntax
233 endif
234
Bram Moolenaara2a80162017-11-21 23:09:50 +0100235 syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueCommentWhite,@NoSpell,@Dotx
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000236 syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+
237
238 " Match single line identifiers.
239 syn keyword doxygenBOther contained class enum file fn mainpage interface
240 \ namespace struct typedef union var def name
241 \ nextgroup=doxygenSpecialTypeOnelineDesc
242
243 syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine
244 syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100245 " 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=doxygenSpecialMultilineDesc
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000247 syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc
248 syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc
249 syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc
250
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000251 " Handle \link, \endlink, highlighting the link-to and the link text bits separately.
Bram Moolenaara2a80162017-11-21 23:09:50 +0100252 syn region doxygenOtherLink matchgroup=doxygenOther start=+\<link\>+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueCommentWhite,doxygenLinkError,doxygenEndlinkSpecial
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000253 syn match doxygenEndlinkSpecial contained +[\\@]\zeendlink\>+
254
255 syn match doxygenLinkWord "[_a-zA-Z:#()][_a-z0-9A-Z:#()]*\>" contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment
256 syn match doxygenLinkRest +[^*@\\]\|\*/\@!\|[@\\]\(endlink\>\)\@!+ contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment
257 syn match doxygenContinueLinkComment contained +^\s*\*\=[^/]+me=e-1 nextgroup=doxygenLinkRest
258 syn match doxygenLinkError "\*/" contained
Bram Moolenaar6c391a72021-09-09 21:55:11 +0200259 " #Link highlighting.
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100260 syn match doxygenHashLink /\(\h\w*\)\?#\(\.\w\@=\|\w\+\|::\|()\)\+/ contained contains=doxygenHashSpecial
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000261 syn match doxygenHashSpecial /#/ contained
Bram Moolenaar5c736222010-01-06 20:54:52 +0100262 syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000263
264 " Handle \page. This does not use doxygenBrief.
265 syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage
266 syn keyword doxygenPagePage page contained skipwhite nextgroup=doxygenPageIdent
267 syn region doxygenPageDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenBody
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100268 syn match doxygenPageIdent "\<\w\+\>" contained nextgroup=doxygenPageDesc
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000269
270 " Handle section
271 syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent
Bram Moolenaara2a80162017-11-21 23:09:50 +0100272 syn region doxygenSpecialSectionDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueCommentWhite
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100273 syn match doxygenSpecialIdent "\<\w\+\>" contained nextgroup=doxygenSpecialSectionDesc
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000274
275 " Does the one-line description for the one-line type identifiers.
276 syn region doxygenSpecialTypeOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend
277 syn region doxygenSpecialOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend
278
279 " Handle the multiline description for the multiline type identifiers.
280 " Continue until an 'empty' line (can contain a '*' continuation) or until the
281 " next whole-line @ command \ command.
Bram Moolenaara2a80162017-11-21 23:09:50 +0100282 syn region doxygenSpecialMultilineDesc start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend
283
284" syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite
285 syn match doxygenSpecialContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenSpecialContinueComment
286 syn match doxygenSpecialContinueComment contained +\*/\@!+
287
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000288
289 " Handle special cases 'bold' and 'group'
290 syn keyword doxygenBold contained bold nextgroup=doxygenSpecialHeading
291 syn keyword doxygenBriefWord contained brief nextgroup=doxygenBriefLine skipwhite
292 syn match doxygenSpecialHeading +.\++ contained skipwhite
293 syn keyword doxygenGroup contained group nextgroup=doxygenGroupName skipwhite
294 syn keyword doxygenGroupName contained +\k\++ nextgroup=doxygenSpecialOnelineDesc skipwhite
295
296 " Handle special symbol identifiers @$, @\, @$ etc
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000297 syn match doxygenSymbol contained +[$\\&<>#n]+
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000298
299 " Simplistic handling of formula regions
300 syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\$+ end=+[@\\]f\$+ contains=doxygenFormulaSpecial,doxygenFormulaOperator
301 syn match doxygenFormulaSpecial contained +[@\\]\(f[^$]\|[^f]\)+me=s+1 nextgroup=doxygenFormulaKeyword,doxygenFormulaEscaped
302 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,doxygenAtom
307 syn region doxygenAtom contained transparent matchgroup=doxygenFormulaOperator start=+{+ end=+}+ contains=doxygenAtom,doxygenFormulaSpecial,doxygenFormulaOperator
308
Bram Moolenaar6c391a72021-09-09 21:55:11 +0200309 " Add TODO highlighting.
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000310 syn keyword doxygenTODO contained TODO README XXX FIXME
311
312 " Supported HTML subset. Not perfect, but okay.
313 syn case ignore
Bram Moolenaara2a80162017-11-21 23:09:50 +0100314 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,doxygenHtmlVar
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000315 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
316 syn keyword doxygenHtmlVar contained src alt longdesc name height width usemap ismap href type nextgroup=doxygenHtmlEqu skipwhite
317 syn match doxygenHtmlEqu contained +=+ nextgroup=doxygenHtmlExpr skipwhite
318 syn match doxygenHtmlExpr contained +"\(\\.\|[^"]\)*"\|'\(\\.\|[^']\)*'+ nextgroup=doxygenHtmlVar skipwhite
319 syn case match
320 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,doxygenHtmlLink
323
Bram Moolenaara2a80162017-11-21 23:09:50 +0100324 syn cluster doxygenHtmlTop contains=@Spell,doxygenHtmlSpecial,doxygenHtmlTag,doxygenContinueCommentWhite
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000325 " Html Support
326 syn region doxygenHtmlLink contained start=+<[aA]\>\s*\(\n\s*\*\s*\)\=\(\(name\|href\)=\("[^"]*"\|'[^']*'\)\)\=\s*>+ end=+</[aA]>+me=e-4 contains=@doxygenHtmlTop
327 hi link doxygenHtmlLink Underlined
328
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000329 syn region doxygenHtmlBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell
330 syn region doxygenHtmlBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell
331 syn region doxygenHtmlBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell
332 syn region doxygenHtmlBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell
333 syn region doxygenHtmlBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell
334 syn region doxygenHtmlBoldUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell
335 syn region doxygenHtmlBoldUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
336 syn region doxygenHtmlBoldItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000337
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000338 syn region doxygenHtmlUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBold,doxygenHtmlUnderlineItalic,@Spell
339 syn region doxygenHtmlUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell
340 syn region doxygenHtmlUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell
341 syn region doxygenHtmlUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell
342 syn region doxygenHtmlUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell
343 syn region doxygenHtmlUnderlineItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell
344 syn region doxygenHtmlUnderlineItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell
345 syn region doxygenHtmlUnderlineBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell
346 syn region doxygenHtmlUnderlineBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000347
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000348 syn region doxygenHtmlItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBold,doxygenHtmlItalicUnderline,@Spell
349 syn region doxygenHtmlItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
350 syn region doxygenHtmlItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell
351 syn region doxygenHtmlItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell
352 syn region doxygenHtmlItalicBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,@Spell
353 syn region doxygenHtmlItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicUnderlineBold,@Spell
354 syn region doxygenHtmlItalicUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell
355 syn region doxygenHtmlItalicUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000356
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000357 syn region doxygenHtmlCode contained start="\c<code\>" end="\c</code>"me=e-7 contains=@doxygenHtmlTop,@NoSpell
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000358
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000359 " Prevent the doxygen contained matches from leaking into the c/rc groups.
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000360 syn cluster cParenGroup add=doxygen.*
361 syn cluster cParenGroup remove=doxygenComment,doxygenCommentL
362 syn cluster cPreProcGroup add=doxygen.*
363 syn cluster cMultiGroup add=doxygen.*
364 syn cluster rcParenGroup add=doxygen.*
365 syn cluster rcParenGroup remove=doxygenComment,doxygenCommentL
366 syn cluster rcGroup add=doxygen.*
367
368 let s:my_syncolor=0
Bram Moolenaara2a80162017-11-21 23:09:50 +0100369 if !exists(':SynColor')
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000370 command -nargs=+ SynColor hi def <args>
371 let s:my_syncolor=1
372 endif
373
374 let s:my_synlink=0
375 if !exists(':SynLink')
376 command -nargs=+ SynLink hi def link <args>
377 let s:my_synlink=1
378 endif
379
380 try
381 "let did_doxygen_syntax_inits = &background
382 hi doxygen_Dummy guifg=black
383
384 fun! s:Doxygen_Hilights_Base()
385 SynLink doxygenHtmlSpecial Special
386 SynLink doxygenHtmlVar Type
387 SynLink doxygenHtmlExpr String
388
389 SynLink doxygenSmallSpecial SpecialChar
390
391 SynLink doxygenSpecialCodeWord doxygenSmallSpecial
392 SynLink doxygenSpecialBoldWord doxygenSmallSpecial
393 SynLink doxygenSpecialEmphasisedWord doxygenSmallSpecial
394 SynLink doxygenSpecialArgumentWord doxygenSmallSpecial
395
396 " SynColor doxygenFormulaKeyword cterm=bold ctermfg=DarkMagenta guifg=DarkMagenta gui=bold
397 SynLink doxygenFormulaKeyword Keyword
398 "SynColor doxygenFormulaEscaped ctermfg=DarkMagenta guifg=DarkMagenta gui=bold
399 SynLink doxygenFormulaEscaped Special
400 SynLink doxygenFormulaOperator Operator
401 SynLink doxygenFormula Statement
402 SynLink doxygenSymbol Constant
403 SynLink doxygenSpecial Special
404 SynLink doxygenFormulaSpecial Special
405 "SynColor doxygenFormulaSpecial ctermfg=DarkBlue guifg=DarkBlue
406 endfun
407 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_font
415 else
416 let font=g:doxygen_codeword_font
417 endif
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000418 else
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000419 " 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 else
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100425 let font="font='".substitute(&guifont, '^.\{-}\(\d\+\)$', 'FreeSerif \1','')."'"
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000426 endif
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000427
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000428 elseif has('gui_win32') || has('gui_win16') || has('gui_win95')
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000429
430 if exists('g:doxygen_use_bitsream_vera') && g:doxygen_use_bitsream_vera
431 let font_base='Bitstream_Vera_Sans_Mono'
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000432 else
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000433 let font_base='Lucida_Console'
434 endif
435 if &guifont == ''
436 let font='font='.font_base.':h10'
437 else
438 let font='font='.matchstr(substitute(&guifont, '^[^:]*', font_base,''),'[^,]*')
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000439 endif
440 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 else
444 " 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 of
446 " the two fonts will look good.
447 endif
448 elseif has('gui_kde')
449 " let font='font=Bitstream\ Vera\ Sans\ Mono/12/-1/5/50/0/0/0/0/0'
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000450 endif
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000451 endif
452 endif
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000453 if font=='' | let font='gui=bold' | endif
454 exe 'SynColor doxygenCodeWord term=bold cterm=bold '.font
455 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=DarkRed
458 SynColor doxygenBrief cterm=bold ctermfg=Cyan guifg=DarkBlue gui=bold
459 SynColor doxygenBody ctermfg=DarkBlue guifg=DarkBlue
460 SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=DarkRed guifg=firebrick3 gui=bold
461 SynColor doxygenBOther cterm=bold ctermfg=DarkMagenta guifg=#aa50aa gui=bold
462 SynColor doxygenParam ctermfg=DarkGray guifg=#aa50aa
463 SynColor doxygenParamName cterm=italic ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=italic,bold
464 SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=DarkCyan guifg=DodgerBlue3 gui=bold
465 SynColor doxygenSpecialHeading cterm=bold ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=bold
466 SynColor doxygenPrev ctermfg=DarkGreen guifg=DarkGreen
467 else
468 SynColor doxygenComment ctermfg=LightRed guifg=LightRed
469 SynColor doxygenBrief cterm=bold ctermfg=Cyan ctermbg=darkgrey guifg=LightBlue gui=Bold,Italic
470 SynColor doxygenBody ctermfg=Cyan guifg=LightBlue
471 SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=Red guifg=firebrick3 gui=bold
472 SynColor doxygenBOther cterm=bold ctermfg=Magenta guifg=#aa50aa gui=bold
473 SynColor doxygenParam ctermfg=LightGray guifg=LightGray
474 SynColor doxygenParamName cterm=italic ctermfg=LightBlue guifg=LightBlue gui=italic,bold
475 SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=LightCyan guifg=LightCyan gui=bold
476 SynColor doxygenSpecialHeading cterm=bold ctermfg=LightBlue guifg=LightBlue gui=bold
477 SynColor doxygenPrev ctermfg=LightGreen guifg=LightGreen
478 endif
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100479 SynLink doxygenValue doxygenParamName
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000480 else
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000481 SynLink doxygenComment SpecialComment
482 SynLink doxygenBrief Statement
483 SynLink doxygenBody Comment
484 SynLink doxygenSpecialTypeOnelineDesc Statement
485 SynLink doxygenBOther Constant
486 SynLink doxygenParam SpecialComment
487 SynLink doxygenParamName Underlined
488 SynLink doxygenSpecialOnelineDesc Statement
489 SynLink doxygenSpecialHeading Statement
490 SynLink doxygenPrev SpecialComment
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100491 SynLink doxygenValue Constant
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000492 endif
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100493 SynLink doxygenTParam doxygenParam
494
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000495 endfun
496
497 call s:Doxygen_Hilights()
498
Bram Moolenaara2a80162017-11-21 23:09:50 +0100499 syn match doxygenLeadingWhite +\(^\s*\*\)\@<=\s*+ contained
500
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000501 " This is still a proposal, but won't do any harm.
502 aug doxygengroup
503 au!
504 au Syntax UserColor_reset nested call s:Doxygen_Hilights_Base()
505 au Syntax UserColor_{on,reset,enable} nested call s:Doxygen_Hilights()
506 aug END
507
508
509 SynLink doxygenBody Comment
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000510 SynLink doxygenLine doxygenBody
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000511 SynLink doxygenTODO Todo
512 SynLink doxygenOtherTODO Todo
513 SynLink doxygenOtherWARN Todo
514 SynLink doxygenOtherBUG Todo
Bram Moolenaara2a80162017-11-21 23:09:50 +0100515 SynLink doxygenLeadingLWhite doxygenBody
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000516
517 SynLink doxygenErrorSpecial Error
518 SynLink doxygenErrorEnd Error
519 SynLink doxygenErrorComment Error
520 SynLink doxygenLinkError Error
521 SynLink doxygenBriefSpecial doxygenSpecial
522 SynLink doxygenHashSpecial doxygenSpecial
523 SynLink doxygenGroupDefineSpecial doxygenSpecial
524 SynLink doxygenEndlinkSpecial doxygenSpecial
525 SynLink doxygenCodeRegionSpecial doxygenSpecial
526 SynLink doxygenVerbatimRegionSpecial doxygenSpecial
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000527 SynLink doxygenDotRegionSpecial doxygenSpecial
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000528 SynLink doxygenGroupDefine doxygenParam
529
530 SynLink doxygenSpecialMultilineDesc doxygenSpecialOnelineDesc
531 SynLink doxygenFormulaEnds doxygenSpecial
532 SynLink doxygenBold doxygenParam
533 SynLink doxygenBriefWord doxygenParam
534 SynLink doxygenRetval doxygenParam
535 SynLink doxygenOther doxygenParam
536 SynLink doxygenStart doxygenComment
537 SynLink doxygenStart2 doxygenStart
538 SynLink doxygenComment2 doxygenComment
539 SynLink doxygenCommentL doxygenComment
540 SynLink doxygenContinueComment doxygenComment
541 SynLink doxygenSpecialContinueComment doxygenComment
542 SynLink doxygenSkipComment doxygenComment
543 SynLink doxygenEndComment doxygenComment
544 SynLink doxygenStartL doxygenComment
545 SynLink doxygenBriefEndComment doxygenComment
546 SynLink doxygenPrevL doxygenPrev
547 SynLink doxygenBriefL doxygenBrief
548 SynLink doxygenBriefLine doxygenBrief
549 SynLink doxygenHeaderLine doxygenSpecialHeading
Bram Moolenaara2a80162017-11-21 23:09:50 +0100550 SynLink doxygenCommentWhite Normal
551 SynLink doxygenCommentWhite2 doxygenCommentWhite
552 SynLink doxygenContinueCommentWhite doxygenCommentWhite
553 SynLink doxygenStartSkipWhite doxygenContinueCommentWhite
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000554 SynLink doxygenLinkWord doxygenParamName
555 SynLink doxygenLinkRest doxygenSpecialMultilineDesc
556 SynLink doxygenHyperLink doxygenLinkWord
557 SynLink doxygenHashLink doxygenLinkWord
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100558 SynLink doxygenReturnValue doxygenValue
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000559
560 SynLink doxygenPage doxygenSpecial
561 SynLink doxygenPagePage doxygenBOther
562 SynLink doxygenPageIdent doxygenParamName
563 SynLink doxygenPageDesc doxygenSpecialTypeOnelineDesc
564
565 SynLink doxygenSpecialIdent doxygenPageIdent
566 SynLink doxygenSpecialSectionDesc doxygenSpecialMultilineDesc
567
568 SynLink doxygenSpecialRefWord doxygenOther
569 SynLink doxygenRefWord doxygenPageIdent
570 SynLink doxygenContinueLinkComment doxygenComment
571
572 SynLink doxygenHtmlCh Function
573 SynLink doxygenHtmlCmd Statement
574 SynLink doxygenHtmlBoldItalicUnderline doxygenHtmlBoldUnderlineItalic
575 SynLink doxygenHtmlUnderlineBold doxygenHtmlBoldUnderline
576 SynLink doxygenHtmlUnderlineItalicBold doxygenHtmlBoldUnderlineItalic
577 SynLink doxygenHtmlUnderlineBoldItalic doxygenHtmlBoldUnderlineItalic
578 SynLink doxygenHtmlItalicUnderline doxygenHtmlUnderlineItalic
579 SynLink doxygenHtmlItalicBold doxygenHtmlBoldItalic
580 SynLink doxygenHtmlItalicBoldUnderline doxygenHtmlBoldUnderlineItalic
581 SynLink doxygenHtmlItalicUnderlineBold doxygenHtmlBoldUnderlineItalic
582 SynLink doxygenHtmlLink Underlined
583
584 SynLink doxygenParamDirection StorageClass
585
586
587 if !exists("doxygen_my_rendering") && !exists("html_my_rendering")
588 SynColor doxygenBoldWord term=bold cterm=bold gui=bold
589 SynColor doxygenEmphasisedWord term=italic cterm=italic gui=italic
590 SynLink doxygenArgumentWord doxygenEmphasisedWord
591 SynLink doxygenHtmlCode doxygenCodeWord
592 SynLink doxygenHtmlBold doxygenBoldWord
593 SynColor doxygenHtmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
594 SynColor doxygenHtmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
595 SynColor doxygenHtmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
596 SynColor doxygenHtmlUnderline term=underline cterm=underline gui=underline
597 SynColor doxygenHtmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
598 SynColor doxygenHtmlItalic term=italic cterm=italic gui=italic
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000599 endif
Bram Moolenaarb21e5842006-04-16 18:30:08 +0000600
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000601 finally
602 if s:my_synlink | delcommand SynLink | endif
603 if s:my_syncolor | delcommand SynColor | endif
604 endtry
Bram Moolenaarb21e5842006-04-16 18:30:08 +0000605
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000606 if &syntax=='idl'
607 syn cluster idlCommentable add=doxygenComment,doxygenCommentL
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000608 endif
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000609
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000610 "syn sync clear
611 "syn sync maxlines=500
612 "syn sync minlines=50
613 syn sync match doxygenComment groupthere cComment "/\@<!/\*"
614 syn sync match doxygenSyncComment grouphere doxygenComment "/\@<!/\*[*!]"
615 "syn sync match doxygenSyncComment grouphere doxygenComment "/\*[*!]" contains=doxygenStart,doxygenTODO keepend
616 syn sync match doxygenSyncEndComment groupthere NONE "\*/"
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000617
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000618 if !exists('b:current_syntax')
619 let b:current_syntax = "doxygen"
620 else
621 let b:current_syntax = b:current_syntax.'.doxygen'
622 endif
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000623
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000624finally
625 let &cpo = s:cpo_save
626 unlet s:cpo_save
627endtry
Bram Moolenaara2a80162017-11-21 23:09:50 +0100628let suppress_doxygen=1
Bram Moolenaarc6249bb2006-04-15 20:25:09 +0000629" vim:et sw=2 sts=2