asy.vim (13275B)
1 " Vim syntax file 2 " Language: Asymptote 3 " Maintainer: Avid Seeker <avidseeker7@protonmail.com> 4 " Andy Hammerlindl 5 " Last Change: 2022 Jan 05 6 " 2025 Apr 16 by Vim Project (set 'cpoptions' for line continuation, #17121) 7 8 " Hacked together from Bram Moolenaar's C syntax file, and Claudio Fleiner's 9 " Java syntax file. 10 11 if exists("b:current_syntax") 12 finish 13 endif 14 15 let s:cpo_save = &cpo 16 set cpo&vim 17 18 " useful C/C++/Java keywords 19 syn keyword asyStatement break return continue unravel 20 syn keyword asyConditional if else 21 syn keyword asyRepeat while for do 22 syn keyword asyExternal access from import include 23 syn keyword asyOperator new operator 24 25 " basic asymptote keywords 26 syn keyword asyConstant VERSION 27 syn keyword asyConstant true false default infinity inf nan 28 syn keyword asyConstant null nullframe nullpath nullpen 29 syn keyword asyConstant intMin intMax realMin realMax 30 syn keyword asyConstant realEpsilon realDigits 31 syn keyword asyPathSpec and cycle controls tension atleast curl 32 syn keyword asyStorageClass static public restricted private explicit 33 syn keyword asyStructure struct typedef 34 syn keyword asyType void bool bool3 int real string file 35 syn keyword asyType pair triple transform guide path pen frame 36 syn keyword asyType picture 37 38 " module specific keywords 39 if exists("asy_syn_plain") 40 syn keyword asyConstant currentpicture currentpen defaultpen 41 syn keyword asyConstant inch inches cm mm bp pt up down right left 42 syn keyword asyConstant E NE N NW W SW S SE 43 syn keyword asyConstant ENE NNE NNW WNW WSW SSW SSE ESE 44 syn keyword asyConstant I pi twopi 45 syn keyword asyConstant CCW CW 46 syn keyword asyConstant undefined sqrtEpsilon Align mantissaBits 47 syn keyword asyConstant identity zeroTransform invert 48 syn keyword asyConstant stdin stdout 49 syn keyword asyConstant unitsquare unitcircle circleprecision 50 syn keyword asyConstant solid dotted Dotted dashed dashdotted 51 syn keyword asyConstant longdashed longdashdotted 52 syn keyword asyConstant squarecap roundcap extendcap 53 syn keyword asyConstant miterjoin roundjoin beveljoin 54 syn keyword asyConstant zerowinding evenodd basealign nobasealign 55 syn keyword asyConstant black white gray red green blue Cyan Magenta 56 syn keyword asyConstant Yellow Black cyan magenta yellow palered 57 syn keyword asyConstant palegreen paleblue palecyan palemagenta 58 syn keyword asyConstant paleyellow palegray lightred lightgreen 59 syn keyword asyConstant lightblue lightcyan lightmagenta lightyellow 60 syn keyword asyConstant lightgray mediumred mediumgreen mediumblue 61 syn keyword asyConstant mediumcyan mediummagenta mediumyellow 62 syn keyword asyConstant mediumgray heavyred heavygreen heavyblue 63 syn keyword asyConstant heavycyan heavymagenta lightolive heavygray 64 syn keyword asyConstant deepred deepgreen deepblue deepcyan 65 syn keyword asyConstant deepmagenta deepyellow deepgray darkred 66 syn keyword asyConstant darkgreen darkblue darkcyan darkmagenta 67 syn keyword asyConstant darkolive darkgray orange fuchsia chartreuse 68 syn keyword asyConstant springgreen purple royalblue salmon brown 69 syn keyword asyConstant olive darkbrown pink palegrey lightgrey 70 syn keyword asyConstant mediumgrey grey heavygrey deepgrey darkgrey 71 72 if exists("asy_syn_texcolors") 73 syn keyword asyConstant GreenYellow Yellow Goldenrod Dandelion 74 syn keyword asyConstant Apricot Peach Melon YellowOrange Orange 75 syn keyword asyConstant BurntOrange Bittersweet RedOrange Mahogany 76 syn keyword asyConstant Maroon BrickRed Red OrangeRed RubineRed 77 syn keyword asyConstant WildStrawberry Salmon CarnationPink Magenta 78 syn keyword asyConstant VioletRed Rhodamine Mulberry RedViolet 79 syn keyword asyConstant Fuchsia Lavender Thistle Orchid DarkOrchid 80 syn keyword asyConstant Purple Plum Violet RoyalPurple BlueViolet 81 syn keyword asyConstant Periwinkle CadetBlue CornflowerBlue 82 syn keyword asyConstant MidnightBlue NavyBlue RoyalBlue Blue 83 syn keyword asyConstant Cerulean Cyan ProcessBlue SkyBlue Turquoise 84 syn keyword asyConstant TealBlue Aquamarine BlueGreen Emerald 85 syn keyword asyConstant JungleGreen SeaGreen Green ForestGreen 86 syn keyword asyConstant PineGreen LimeGreen YellowGreen SpringGreen 87 syn keyword asyConstant OliveGreen RawSienna Sepia Brown Tan Gray 88 syn keyword asyConstant Black White 89 endif 90 91 if exists("asy_syn_x11colors") 92 syn keyword asyConstant AliceBlue AntiqueWhite Aqua Aquamarine Azure 93 syn keyword asyConstant Beige Bisque Black BlanchedAlmond Blue 94 syn keyword asyConstant BlueViolet Brown BurlyWood CadetBlue 95 syn keyword asyConstant Chartreuse Chocolate Coral CornflowerBlue 96 syn keyword asyConstant Cornsilk Crimson Cyan DarkBlue DarkCyan 97 syn keyword asyConstant DarkGoldenrod DarkGray DarkGreen DarkKhaki 98 syn keyword asyConstant DarkMagenta DarkOliveGreen DarkOrange 99 syn keyword asyConstant DarkOrchid DarkRed DarkSalmon DarkSeaGreen 100 syn keyword asyConstant DarkSlateBlue DarkSlateGray DarkTurquoise 101 syn keyword asyConstant DarkViolet DeepPink DeepSkyBlue DimGray 102 syn keyword asyConstant DodgerBlue FireBrick FloralWhite ForestGreen 103 syn keyword asyConstant Fuchsia Gainsboro GhostWhite Gold Goldenrod 104 syn keyword asyConstant Gray Green GreenYellow Honeydew HotPink 105 syn keyword asyConstant IndianRed Indigo Ivory Khaki Lavender 106 syn keyword asyConstant LavenderBlush LawnGreen LemonChiffon 107 syn keyword asyConstant LightBlue LightCoral LightCyan 108 syn keyword asyConstant LightGoldenrodYellow LightGreen LightGrey 109 syn keyword asyConstant LightPink LightSalmon LightSeaGreen 110 syn keyword asyConstant LightSkyBlue LightSlateGray LightSteelBlue 111 syn keyword asyConstant LightYellow Lime LimeGreen Linen Magenta 112 syn keyword asyConstant Maroon MediumAquamarine MediumBlue 113 syn keyword asyConstant MediumOrchid MediumPurple MediumSeaGreen 114 syn keyword asyConstant MediumSlateBlue MediumSpringGreen 115 syn keyword asyConstant MediumTurquoise MediumVioletRed MidnightBlue 116 syn keyword asyConstant MintCream MistyRose Moccasin NavajoWhite 117 syn keyword asyConstant Navy OldLace Olive OliveDrab Orange 118 syn keyword asyConstant OrangeRed Orchid PaleGoldenrod PaleGreen 119 syn keyword asyConstant PaleTurquoise PaleVioletRed PapayaWhip 120 syn keyword asyConstant PeachPuff Peru Pink Plum PowderBlue Purple 121 syn keyword asyConstant Red RosyBrown RoyalBlue SaddleBrown Salmon 122 syn keyword asyConstant SandyBrown SeaGreen Seashell Sienna Silver 123 syn keyword asyConstant SkyBlue SlateBlue SlateGray Snow SpringGreen 124 syn keyword asyConstant SteelBlue Tan Teal Thistle Tomato Turquoise 125 syn keyword asyConstant Violet Wheat White WhiteSmoke Yellow 126 syn keyword asyConstant YellowGreen 127 endif 128 129 if exists("asy_syn_three") 130 syn keyword asyType path3 guide3 transform3 131 syn keyword asyType projection light material patch surface tube 132 syn keyword asyConstant currentprojection currentlight defaultrender 133 syn keyword asyConstant identity4 O X Y Z 134 syn keyword asyConstant nolight nullpens 135 syn keyword asyConstant unitsphere unithemisphere unitplane octant1 136 syn keyword asyConstant unitcone unitsolidcone unitcube unitcylinder 137 syn keyword asyConstant unitdisk unittube 138 endif 139 endif 140 141 142 " string constants 143 syn region asyCString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=asyCSpecial 144 syn match asyCSpecial display contained +\\\(['"?\\abfnrtv]\|\o\{1,3}\)+ 145 syn match asyCSpecial display contained +\\\(x[0-9A-F]\{1,2\}\|$\)+ 146 " double quoted strings only special character is \" 147 syn region asyString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=asySpecial 148 syn match asySpecial display contained +\(\\\)\@1<!\(\\\\\)*\zs\\"+ 149 150 151 " number constants 152 syn match asyNumbers display transparent "\<\d\|\.\d" 153 \ contains=asyNumber,asyNumberError 154 syn match asyNumber display contained "\d*\.\=\d*\(e[-+]\=\d\+\)\=" 155 " highlight number constants with two '.' or with '.' after an 'e' 156 syn match asyNumberError display contained "\d*\.\(\d\|e[-+]\=\)*\.[0-9.]*" 157 syn match asyNumberError display contained "\d*e[-+]\=\d*\.[0-9.]*" 158 syn match asyNumberError display contained "\d*e[-+]\=\(e[-+]\=\)*\.[0-9.]*" 159 160 161 " comments and comment strings 162 syn keyword asyTodo contained TODO FIXME XXX 163 syn sync ccomment asyComment minlines=15 164 if exists("asy_comment_strings") 165 " A comment can contain asyString, asyCString, and asyNumber. But a "*/" 166 " inside a asy*String in a asyComment DOES end the comment! So we need to 167 " use a special type of asy*String: asyComment*String, which also ends on 168 " "*/", and sees a "*" at the start of the line as comment again. 169 " Unfortunately this doesn't very well work for // type of comments :-( 170 syn match asyCommentSkip contained "^\s*\*\($\|\s\+\)" 171 syn region asyCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 172 \ end=+\*/+me=s-1 173 \ contains=asySpecial,asyCommentSkip 174 syn region asyCommentCString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ 175 \ end=+\*/+me=s-1 176 \ contains=asyCSpecial,asyCommentSkip 177 syn region asyCommentLString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 178 \ end="$" contains=asySpecial 179 syn region asyCommentLCString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ 180 \ end="$" contains=asyCSpecial 181 syn region asyCommentL start="//" skip="\\$" end="$" keepend 182 \ contains=asyTodo,asyCommentLString, 183 \ asyCommentLCString,asyNumbers 184 syn region asyComment matchgroup=asyComment start="/\*" end="\*/" 185 \ contains=asyTodo,asyCommentStartError, 186 \ asyCommentString,asyCommentCString,asyNumbers 187 else 188 syn region asyCommentL start="//" skip="\\$" end="$" keepend 189 \ contains=asyTodo 190 syn region asyComment matchgroup=asyComment start="/\*" end="\*/" 191 \ contains=asyTodo,asyCommentStartError 192 endif 193 194 " highlight common errors when starting/ending C comments 195 syn match asyCommentError display "\*/" 196 syn match asyCommentStartError display "/\*"me=e-1 contained 197 198 199 " delimiter matching errors 200 syn region asyCurly transparent start='{' end='}' 201 \ contains=TOP,asyCurlyError 202 syn region asyBrack transparent start='\[' end='\]' matchgroup=asyError 203 \ end=';' contains=TOP,asyBrackError 204 syn region asyParen transparent start='(' end=')' matchgroup=asyError 205 \ end=';' contains=TOP,asyParenError 206 syn match asyCurlyError display '}' 207 syn match asyBrackError display '\]' 208 syn match asyParenError display ')' 209 " for (;;) constructs are exceptions that allow ; inside parenthesis 210 syn region asyParen transparent matchgroup=asyParen 211 \ start='\(for\s*\)\@<=(' end=')' 212 \ contains=TOP,asyParenError 213 214 " Define the default highlighting. 215 hi def link asyCommentL asyComment 216 hi def link asyConditional Conditional 217 hi def link asyRepeat Repeat 218 hi def link asyNumber Number 219 hi def link asyNumberError asyError 220 hi def link asyCurlyError asyError 221 hi def link asyBracketError asyError 222 hi def link asyParenError asyError 223 hi def link asyCommentError asyError 224 hi def link asyCommentStartError asyError 225 hi def link asyOperator Operator 226 hi def link asyStructure Structure 227 hi def link asyStorageClass StorageClass 228 hi def link asyExternal Include 229 hi def link asyDefine Macro 230 hi def link asyError Error 231 hi def link asyStatement Statement 232 hi def link asyType Type 233 hi def link asyConstant Constant 234 hi def link asyCommentString asyString 235 hi def link asyCommentCString asyString 236 hi def link asyCommentLString asyString 237 hi def link asyCommentLCString asyString 238 hi def link asyCommentSkip asyComment 239 hi def link asyString String 240 hi def link asyCString String 241 hi def link asyComment Comment 242 hi def link asySpecial SpecialChar 243 hi def link asyCSpecial SpecialChar 244 hi def link asyTodo Todo 245 hi def link asyPathSpec Statement 246 247 let b:current_syntax = "asy" 248 let &cpo = s:cpo_save 249 unlet s:cpo_save