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