mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
	
	
		
			244 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			244 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim syntax file | ||
|  | " Language:     Asymptote | ||
|  | " Maintainer:   Avid Seeker <avidseeker7@protonmail.com> | ||
|  | "               Andy Hammerlindl | ||
|  | " Last Change:  2022 Jan 05 | ||
|  | 
 | ||
|  | " Hacked together from Bram Moolenaar's C syntax file, and Claudio Fleiner's | ||
|  | " Java syntax file. | ||
|  | 
 | ||
|  | if exists("b:current_syntax") | ||
|  |   finish | ||
|  | endif | ||
|  | 
 | ||
|  | " useful C/C++/Java keywords | ||
|  | syn keyword     asyStatement     break return continue unravel | ||
|  | syn keyword     asyConditional   if else | ||
|  | syn keyword     asyRepeat        while for do | ||
|  | syn keyword     asyExternal      access from import include | ||
|  | syn keyword     asyOperator      new operator | ||
|  | 
 | ||
|  | " basic asymptote keywords | ||
|  | syn keyword     asyConstant      VERSION | ||
|  | syn keyword     asyConstant      true false default infinity inf nan | ||
|  | syn keyword     asyConstant      null nullframe nullpath nullpen | ||
|  | syn keyword     asyConstant      intMin intMax realMin realMax | ||
|  | syn keyword     asyConstant      realEpsilon realDigits | ||
|  | syn keyword     asyPathSpec      and cycle controls tension atleast curl | ||
|  | syn keyword     asyStorageClass  static public restricted private explicit | ||
|  | syn keyword     asyStructure     struct typedef | ||
|  | syn keyword     asyType          void bool bool3 int real string file | ||
|  | syn keyword     asyType          pair triple transform guide path pen frame | ||
|  | syn keyword     asyType          picture | ||
|  | 
 | ||
|  | " module specific keywords | ||
|  | if exists("asy_syn_plain") | ||
|  |   syn keyword   asyConstant      currentpicture currentpen defaultpen | ||
|  |   syn keyword   asyConstant      inch inches cm mm bp pt up down right left | ||
|  |   syn keyword   asyConstant      E NE N NW W SW S SE | ||
|  |   syn keyword   asyConstant      ENE NNE NNW WNW WSW SSW SSE ESE | ||
|  |   syn keyword   asyConstant      I pi twopi | ||
|  |   syn keyword   asyConstant      CCW CW | ||
|  |   syn keyword   asyConstant      undefined sqrtEpsilon Align mantissaBits | ||
|  |   syn keyword   asyConstant      identity zeroTransform invert | ||
|  |   syn keyword   asyConstant      stdin stdout | ||
|  |   syn keyword   asyConstant      unitsquare unitcircle circleprecision | ||
|  |   syn keyword   asyConstant      solid dotted Dotted dashed dashdotted | ||
|  |   syn keyword   asyConstant      longdashed longdashdotted | ||
|  |   syn keyword   asyConstant      squarecap roundcap extendcap | ||
|  |   syn keyword   asyConstant      miterjoin roundjoin beveljoin | ||
|  |   syn keyword   asyConstant      zerowinding evenodd basealign nobasealign | ||
|  |   syn keyword   asyConstant      black white gray red green blue Cyan Magenta | ||
|  |   syn keyword   asyConstant      Yellow Black cyan magenta yellow palered | ||
|  |   syn keyword   asyConstant      palegreen paleblue palecyan palemagenta | ||
|  |   syn keyword   asyConstant      paleyellow palegray lightred lightgreen | ||
|  |   syn keyword   asyConstant      lightblue lightcyan lightmagenta lightyellow | ||
|  |   syn keyword   asyConstant      lightgray mediumred mediumgreen mediumblue | ||
|  |   syn keyword   asyConstant      mediumcyan mediummagenta mediumyellow | ||
|  |   syn keyword   asyConstant      mediumgray heavyred heavygreen heavyblue | ||
|  |   syn keyword   asyConstant      heavycyan heavymagenta lightolive heavygray | ||
|  |   syn keyword   asyConstant      deepred deepgreen deepblue deepcyan | ||
|  |   syn keyword   asyConstant      deepmagenta deepyellow deepgray darkred | ||
|  |   syn keyword   asyConstant      darkgreen darkblue darkcyan darkmagenta | ||
|  |   syn keyword   asyConstant      darkolive darkgray orange fuchsia chartreuse | ||
|  |   syn keyword   asyConstant      springgreen purple royalblue salmon brown | ||
|  |   syn keyword   asyConstant      olive darkbrown pink palegrey lightgrey | ||
|  |   syn keyword   asyConstant      mediumgrey grey heavygrey deepgrey darkgrey | ||
|  | 
 | ||
|  |   if exists("asy_syn_texcolors") | ||
|  |     syn keyword asyConstant      GreenYellow Yellow Goldenrod Dandelion | ||
|  |     syn keyword asyConstant      Apricot Peach Melon YellowOrange Orange | ||
|  |     syn keyword asyConstant      BurntOrange Bittersweet RedOrange Mahogany | ||
|  |     syn keyword asyConstant      Maroon BrickRed Red OrangeRed RubineRed | ||
|  |     syn keyword asyConstant      WildStrawberry Salmon CarnationPink Magenta | ||
|  |     syn keyword asyConstant      VioletRed Rhodamine Mulberry RedViolet | ||
|  |     syn keyword asyConstant      Fuchsia Lavender Thistle Orchid DarkOrchid | ||
|  |     syn keyword asyConstant      Purple Plum Violet RoyalPurple BlueViolet | ||
|  |     syn keyword asyConstant      Periwinkle CadetBlue CornflowerBlue | ||
|  |     syn keyword asyConstant      MidnightBlue NavyBlue RoyalBlue Blue | ||
|  |     syn keyword asyConstant      Cerulean Cyan ProcessBlue SkyBlue Turquoise | ||
|  |     syn keyword asyConstant      TealBlue Aquamarine BlueGreen Emerald | ||
|  |     syn keyword asyConstant      JungleGreen SeaGreen Green ForestGreen | ||
|  |     syn keyword asyConstant      PineGreen LimeGreen YellowGreen SpringGreen | ||
|  |     syn keyword asyConstant      OliveGreen RawSienna Sepia Brown Tan Gray | ||
|  |     syn keyword asyConstant      Black White | ||
|  |   endif | ||
|  | 
 | ||
|  |   if exists("asy_syn_x11colors") | ||
|  |     syn keyword asyConstant      AliceBlue AntiqueWhite Aqua Aquamarine Azure | ||
|  |     syn keyword asyConstant      Beige Bisque Black BlanchedAlmond Blue | ||
|  |     syn keyword asyConstant      BlueViolet Brown BurlyWood CadetBlue | ||
|  |     syn keyword asyConstant      Chartreuse Chocolate Coral CornflowerBlue | ||
|  |     syn keyword asyConstant      Cornsilk Crimson Cyan DarkBlue DarkCyan | ||
|  |     syn keyword asyConstant      DarkGoldenrod DarkGray DarkGreen DarkKhaki | ||
|  |     syn keyword asyConstant      DarkMagenta DarkOliveGreen DarkOrange | ||
|  |     syn keyword asyConstant      DarkOrchid DarkRed DarkSalmon DarkSeaGreen | ||
|  |     syn keyword asyConstant      DarkSlateBlue DarkSlateGray DarkTurquoise | ||
|  |     syn keyword asyConstant      DarkViolet DeepPink DeepSkyBlue DimGray | ||
|  |     syn keyword asyConstant      DodgerBlue FireBrick FloralWhite ForestGreen | ||
|  |     syn keyword asyConstant      Fuchsia Gainsboro GhostWhite Gold Goldenrod | ||
|  |     syn keyword asyConstant      Gray Green GreenYellow Honeydew HotPink | ||
|  |     syn keyword asyConstant      IndianRed Indigo Ivory Khaki Lavender | ||
|  |     syn keyword asyConstant      LavenderBlush LawnGreen LemonChiffon | ||
|  |     syn keyword asyConstant      LightBlue LightCoral LightCyan | ||
|  |     syn keyword asyConstant      LightGoldenrodYellow LightGreen LightGrey | ||
|  |     syn keyword asyConstant      LightPink LightSalmon LightSeaGreen | ||
|  |     syn keyword asyConstant      LightSkyBlue LightSlateGray LightSteelBlue | ||
|  |     syn keyword asyConstant      LightYellow Lime LimeGreen Linen Magenta | ||
|  |     syn keyword asyConstant      Maroon MediumAquamarine MediumBlue | ||
|  |     syn keyword asyConstant      MediumOrchid MediumPurple MediumSeaGreen | ||
|  |     syn keyword asyConstant      MediumSlateBlue MediumSpringGreen | ||
|  |     syn keyword asyConstant      MediumTurquoise MediumVioletRed MidnightBlue | ||
|  |     syn keyword asyConstant      MintCream MistyRose Moccasin NavajoWhite | ||
|  |     syn keyword asyConstant      Navy OldLace Olive OliveDrab Orange | ||
|  |     syn keyword asyConstant      OrangeRed Orchid PaleGoldenrod PaleGreen | ||
|  |     syn keyword asyConstant      PaleTurquoise PaleVioletRed PapayaWhip | ||
|  |     syn keyword asyConstant      PeachPuff Peru Pink Plum PowderBlue Purple | ||
|  |     syn keyword asyConstant      Red RosyBrown RoyalBlue SaddleBrown Salmon | ||
|  |     syn keyword asyConstant      SandyBrown SeaGreen Seashell Sienna Silver | ||
|  |     syn keyword asyConstant      SkyBlue SlateBlue SlateGray Snow SpringGreen | ||
|  |     syn keyword asyConstant      SteelBlue Tan Teal Thistle Tomato Turquoise | ||
|  |     syn keyword asyConstant      Violet Wheat White WhiteSmoke Yellow | ||
|  |     syn keyword asyConstant      YellowGreen | ||
|  |   endif | ||
|  | 
 | ||
|  |   if exists("asy_syn_three") | ||
|  |     syn keyword asyType          path3 guide3 transform3 | ||
|  |     syn keyword asyType          projection light material patch surface tube | ||
|  |     syn keyword asyConstant      currentprojection currentlight defaultrender | ||
|  |     syn keyword asyConstant      identity4 O X Y Z | ||
|  |     syn keyword asyConstant      nolight nullpens | ||
|  |     syn keyword asyConstant      unitsphere unithemisphere unitplane octant1 | ||
|  |     syn keyword asyConstant      unitcone unitsolidcone unitcube unitcylinder | ||
|  |     syn keyword asyConstant      unitdisk unittube | ||
|  |   endif | ||
|  | endif | ||
|  | 
 | ||
|  | 
 | ||
|  | " string constants | ||
|  | syn region asyCString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=asyCSpecial | ||
|  | syn match  asyCSpecial display contained +\\\(['"?\\abfnrtv]\|\o\{1,3}\)+ | ||
|  | syn match  asyCSpecial display contained +\\\(x[0-9A-F]\{1,2\}\|$\)+ | ||
|  | " double quoted strings only special character is \" | ||
|  | syn region asyString   start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=asySpecial | ||
|  | syn match  asySpecial  display contained +\(\\\)\@1<!\(\\\\\)*\zs\\"+ | ||
|  | 
 | ||
|  | 
 | ||
|  | " number constants | ||
|  | syn match  asyNumbers     display transparent "\<\d\|\.\d" | ||
|  |                         \ contains=asyNumber,asyNumberError | ||
|  | syn match  asyNumber      display contained "\d*\.\=\d*\(e[-+]\=\d\+\)\=" | ||
|  | " highlight number constants with two '.' or with '.' after an 'e' | ||
|  | syn match  asyNumberError display contained "\d*\.\(\d\|e[-+]\=\)*\.[0-9.]*" | ||
|  | syn match  asyNumberError display contained "\d*e[-+]\=\d*\.[0-9.]*" | ||
|  | syn match  asyNumberError display contained "\d*e[-+]\=\(e[-+]\=\)*\.[0-9.]*" | ||
|  | 
 | ||
|  | 
 | ||
|  | " comments and comment strings | ||
|  | syn keyword  asyTodo            contained TODO FIXME XXX | ||
|  | syn sync     ccomment           asyComment minlines=15 | ||
|  | if exists("asy_comment_strings") | ||
|  |   " A comment can contain asyString, asyCString, and asyNumber. But a "*/" | ||
|  |   " inside a asy*String in a asyComment DOES end the comment!  So we need to | ||
|  |   " use a special type of asy*String: asyComment*String, which also ends on | ||
|  |   " "*/", and sees a "*" at the start of the line as comment again. | ||
|  |   " Unfortunately this doesn't very well work for // type of comments :-( | ||
|  |   syn match  asyCommentSkip     contained "^\s*\*\($\|\s\+\)" | ||
|  |   syn region asyCommentString   contained start=+"+ skip=+\\\\\|\\"+ end=+"+ | ||
|  |                               \ end=+\*/+me=s-1 | ||
|  |                               \ contains=asySpecial,asyCommentSkip | ||
|  |   syn region asyCommentCString  contained start=+'+ skip=+\\\\\|\\'+ end=+'+ | ||
|  |                               \ end=+\*/+me=s-1 | ||
|  |                               \ contains=asyCSpecial,asyCommentSkip | ||
|  |   syn region asyCommentLString  contained start=+"+ skip=+\\\\\|\\"+ end=+"+ | ||
|  |                               \ end="$" contains=asySpecial | ||
|  |   syn region asyCommentLCString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ | ||
|  |                               \ end="$" contains=asyCSpecial | ||
|  |   syn region asyCommentL        start="//" skip="\\$" end="$" keepend | ||
|  |                               \ contains=asyTodo,asyCommentLString, | ||
|  |                               \ asyCommentLCString,asyNumbers | ||
|  |   syn region asyComment         matchgroup=asyComment start="/\*" end="\*/" | ||
|  |                               \ contains=asyTodo,asyCommentStartError, | ||
|  |                               \ asyCommentString,asyCommentCString,asyNumbers | ||
|  | else | ||
|  |   syn region asyCommentL        start="//" skip="\\$" end="$" keepend | ||
|  |                               \ contains=asyTodo | ||
|  |   syn region asyComment         matchgroup=asyComment start="/\*" end="\*/" | ||
|  |                               \ contains=asyTodo,asyCommentStartError | ||
|  | endif | ||
|  | 
 | ||
|  | " highlight common errors when starting/ending C comments | ||
|  | syn match    asyCommentError      display "\*/" | ||
|  | syn match    asyCommentStartError display "/\*"me=e-1 contained | ||
|  | 
 | ||
|  | 
 | ||
|  | " delimiter matching errors | ||
|  | syn region asyCurly      transparent start='{'  end='}' | ||
|  |                        \ contains=TOP,asyCurlyError | ||
|  | syn region asyBrack      transparent start='\[' end='\]' matchgroup=asyError | ||
|  |                        \ end=';' contains=TOP,asyBrackError | ||
|  | syn region asyParen      transparent start='('  end=')'  matchgroup=asyError | ||
|  |                        \ end=';' contains=TOP,asyParenError | ||
|  | syn match  asyCurlyError display '}' | ||
|  | syn match  asyBrackError display '\]' | ||
|  | syn match  asyParenError display ')' | ||
|  | " for (;;) constructs are exceptions that allow ; inside parenthesis | ||
|  | syn region asyParen      transparent matchgroup=asyParen | ||
|  |                        \ start='\(for\s*\)\@<=(' end=')' | ||
|  |                        \ contains=TOP,asyParenError | ||
|  | 
 | ||
|  | " Define the default highlighting. | ||
|  | hi def link asyCommentL             asyComment | ||
|  | hi def link asyConditional          Conditional | ||
|  | hi def link asyRepeat               Repeat | ||
|  | hi def link asyNumber               Number | ||
|  | hi def link asyNumberError          asyError | ||
|  | hi def link asyCurlyError           asyError | ||
|  | hi def link asyBracketError         asyError | ||
|  | hi def link asyParenError           asyError | ||
|  | hi def link asyCommentError         asyError | ||
|  | hi def link asyCommentStartError    asyError | ||
|  | hi def link asyOperator             Operator | ||
|  | hi def link asyStructure            Structure | ||
|  | hi def link asyStorageClass         StorageClass | ||
|  | hi def link asyExternal             Include | ||
|  | hi def link asyDefine               Macro | ||
|  | hi def link asyError                Error | ||
|  | hi def link asyStatement            Statement | ||
|  | hi def link asyType                 Type | ||
|  | hi def link asyConstant             Constant | ||
|  | hi def link asyCommentString        asyString | ||
|  | hi def link asyCommentCString       asyString | ||
|  | hi def link asyCommentLString       asyString | ||
|  | hi def link asyCommentLCString      asyString | ||
|  | hi def link asyCommentSkip          asyComment | ||
|  | hi def link asyString               String | ||
|  | hi def link asyCString              String | ||
|  | hi def link asyComment              Comment | ||
|  | hi def link asySpecial              SpecialChar | ||
|  | hi def link asyCSpecial             SpecialChar | ||
|  | hi def link asyTodo                 Todo | ||
|  | hi def link asyPathSpec             Statement | ||
|  | 
 | ||
|  | let b:current_syntax = "asy" |