mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	closes: #17121 Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
		
			
				
	
	
		
			250 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:     Asymptote
 | |
| " Maintainer:   Avid Seeker <avidseeker7@protonmail.com>
 | |
| "               Andy Hammerlindl
 | |
| " Last Change:  2022 Jan 05
 | |
| " 2025 Apr 16 by Vim Project (set 'cpoptions' for line continuation, #17121)
 | |
| 
 | |
| " Hacked together from Bram Moolenaar's C syntax file, and Claudio Fleiner's
 | |
| " Java syntax file.
 | |
| 
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| let s:cpo_save = &cpo
 | |
| set cpo&vim
 | |
| 
 | |
| " 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"
 | |
| let &cpo = s:cpo_save
 | |
| unlet s:cpo_save
 |