summaryrefslogtreecommitdiff
path: root/graphics/asymptote/base/asy.vim
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/base/asy.vim')
-rw-r--r--graphics/asymptote/base/asy.vim372
1 files changed, 215 insertions, 157 deletions
diff --git a/graphics/asymptote/base/asy.vim b/graphics/asymptote/base/asy.vim
index 4cb897f131..7d0983d07c 100644
--- a/graphics/asymptote/base/asy.vim
+++ b/graphics/asymptote/base/asy.vim
@@ -1,7 +1,7 @@
" Vim syntax file
-" Language: Asymptote
-" Maintainer: Andy Hammerlindl
-" Last Change: 2005 Aug 23
+" Language: Asymptote
+" Maintainer: Andy Hammerlindl
+" Last Change: 2022 Jan 05
" Hacked together from Bram Moolenaar's C syntax file, and Claudio Fleiner's
" Java syntax file.
@@ -9,132 +9,207 @@
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
- syntax clear
+ syn clear
elseif exists("b:current_syntax")
finish
endif
-" A bunch of useful C 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
-
-syn keyword asyTodo contained TODO FIXME XXX
-
-" asyCommentGroup allows adding matches for special things in comments
-syn cluster asyCommentGroup contains=asyTodo
-
-" String and Character constants
-" Highlight special characters (those proceding a double backslash) differently
-syn match asySpecial display contained "\\\\."
-" Highlight line continuation slashes
-syn match asySpecial display contained "\\$"
-syn region asyString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=asySpecial
- " asyCppString: same as asyString, but ends at end of line
-if 0
-syn region asyCppString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=asySpecial
-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
-"when wanted, highlight trailing white space
-if exists("asy_space_errors")
- if !exists("asy_no_trail_space_error")
- syn match asySpaceError display excludenl "\s\+$"
+" 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_no_tab_space_error")
- syn match asySpaceError display " \+\t"me=e-1
+
+ 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
-endif
-"catch errors caused by wrong parenthesis and brackets
-syn cluster asyParenGroup contains=asyParenError,asyIncluded,asySpecial,asyCommentSkip,asyCommentString,asyComment2String,@asyCommentGroup,asyCommentStartError,asyUserCont,asyUserLabel,asyBitField,asyCommentSkip,asyOctalZero,asyCppOut,asyCppOut2,asyCppSkip,asyFormat,asyNumber,asyFloat,asyOctal,asyOctalError,asyNumbersCom
-if exists("asy_no_bracket_error")
- syn region asyParen transparent start='(' end=')' contains=ALLBUT,@asyParenGroup,asyCppParen,asyCppString
- " asyCppParen: same as asyParen but ends at end-of-line; used in asyDefine
- syn region asyCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@asyParenGroup,asyParen,asyString
- syn match asyParenError display ")"
- syn match asyErrInParen display contained "[{}]"
-else
- syn region asyParen transparent start='(' end=')' contains=ALLBUT,@asyParenGroup,asyCppParen,asyErrInBracket,asyCppBracket,asyCppString
- " asyCppParen: same as asyParen but ends at end-of-line; used in asyDefine
- syn region asyCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@asyParenGroup,asyErrInBracket,asyParen,asyBracket,asyString
-if 0
- syn match asyParenError display "[\])]"
- syn match asyErrInParen display contained "[\]]"
-endif
- syn region asyBracket transparent start='\[' end=']' contains=ALLBUT,@asyParenGroup,asyErrInParen,asyCppParen,asyCppBracket,asyCppString
- " asyCppBracket: same as asyParen but ends at end-of-line; used in asyDefine
- syn region asyCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@asyParenGroup,asyErrInParen,asyParen,asyBracket,asyString
- syn match asyErrInBracket display contained "[);]"
+ 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
-"integer number, or floating point number without a dot and with "f".
-syn case ignore
-syn match asyNumbers display transparent "\<\d\|\.\d" contains=asyNumber,asyFloat
-syn match asyNumber display contained "\d\+"
-"floating point number, with dot, optional exponent
-syn match asyFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\="
-"floating point number, starting with a dot, optional exponent
-syn match asyFloat display contained "\.\d\+\(e[-+]\=\d\+\)\="
-"floating point number, without dot, with exponent
-syn match asyFloat display contained "\d\+e[-+]\=\d\+"
-syn case match
+" 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, asyCharacter and asyNumber.
- " But a "*/" inside a asyString in a asyComment DOES end the comment! So we
- " need to use a special type of asyString: asyCommentString, which also ends on
+ " 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 :-(
- syntax match asyCommentSkip contained "^\s*\*\($\|\s\+\)"
- syntax region asyCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=asySpecial,asyCommentSkip
- syntax region asyComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=asySpecial
- syntax region asyCommentL start="//" skip="\\$" end="$" keepend contains=@asyCommentGroup,asyComment2String,asyCharacter,asyNumbersCom,asySpaceError
- syntax region asyComment matchgroup=asyCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@asyCommentGroup,asyCommentStartError,asyCommentString,asyCharacter,asyNumbersCom,asySpaceError
+ 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=@asyCommentGroup,asySpaceError
- syn region asyComment matchgroup=asyCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@asyCommentGroup,asyCommentStartError,asySpaceError
+ syn region asyCommentL start="//" skip="\\$" end="$" keepend
+ \ contains=asyTodo
+ syn region asyComment matchgroup=asyComment start="/\*" end="\*/"
+ \ contains=asyTodo,asyCommentStartError
endif
-" keep a // comment separately, it terminates a preproc. conditional
-syntax match asyCommentError display "\*/"
-syntax match asyCommentStartError display "/\*"me=e-1 contained
-syn keyword asyType void bool int real string
-syn keyword asyType pair triple transform guide path pen frame
-syn keyword asyType picture
+" highlight common errors when starting/ending C comments
+syn match asyCommentError display "\*/"
+syn match asyCommentStartError display "/\*"me=e-1 contained
-syn keyword asyStructure struct typedef
-syn keyword asyStorageClass static public readable private explicit
-syn keyword asyPathSpec and cycle controls tension atleast curl
+" 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
-syn keyword asyConstant true false
-syn keyword asyConstant null nullframe nullpath
-
-if exists("asy_syn_plain")
- syn keyword asyConstant currentpicture currentpen currentprojection
- 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 solid 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
- syn keyword asyConstant invisible black gray grey white
- syn keyword asyConstant lightgray lightgrey
- syn keyword asyConstant red green blue
- syn keyword asyConstant cmyk Cyan Magenta Yellow Black
- syn keyword asyConstant yellow magenta cyan
- syn keyword asyConstant brown darkgreen darkblue
- syn keyword asyConstant orange purple royalblue olive
- syn keyword asyConstant chartreuse fuchsia salmon lightblue springgreen
- syn keyword asyConstant pink
-endif
-
-syn sync ccomment asyComment minlines=15
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
@@ -147,56 +222,39 @@ if version >= 508 || !exists("did_asy_syn_inits")
command -nargs=+ HiLink hi def link <args>
endif
- HiLink asyFormat asySpecial
- HiLink asyCppString asyString
- HiLink asyCommentL asyComment
- HiLink asyCommentStart asyComment
- HiLink asyLabel Label
- HiLink asyUserLabel Label
- HiLink asyConditional Conditional
- HiLink asyRepeat Repeat
- HiLink asyCharacter Character
- HiLink asySpecialCharacter asySpecial
- HiLink asyNumber Number
- HiLink asyOctal Number
- HiLink asyOctalZero PreProc " link this to Error if you want
- HiLink asyFloat Float
- HiLink asyOctalError asyError
- HiLink asyParenError asyError
- HiLink asyErrInParen asyError
- HiLink asyErrInBracket asyError
- HiLink asyCommentError asyError
- HiLink asyCommentStartError asyError
- HiLink asySpaceError asyError
- HiLink asySpecialError asyError
- HiLink asyOperator Operator
- HiLink asyStructure Structure
- HiLink asyStorageClass StorageClass
- HiLink asyExternal Include
- HiLink asyPreProc PreProc
- HiLink asyDefine Macro
- HiLink asyIncluded asyString
- HiLink asyError Error
- HiLink asyStatement Statement
- HiLink asyPreCondit PreCondit
- HiLink asyType Type
- HiLink asyConstant Constant
- HiLink asyCommentString asyString
- HiLink asyComment2String asyString
- HiLink asyCommentSkip asyComment
- HiLink asyString String
- HiLink asyComment Comment
- HiLink asySpecial SpecialChar
- HiLink asyTodo Todo
- HiLink asyCppSkip asyCppOut
- HiLink asyCppOut2 asyCppOut
- HiLink asyCppOut Comment
- HiLink asyPathSpec Statement
-
+ HiLink asyCommentL asyComment
+ HiLink asyConditional Conditional
+ HiLink asyRepeat Repeat
+ HiLink asyNumber Number
+ HiLink asyNumberError asyError
+ HiLink asyCurlyError asyError
+ HiLink asyBracketError asyError
+ HiLink asyParenError asyError
+ HiLink asyCommentError asyError
+ HiLink asyCommentStartError asyError
+ HiLink asyOperator Operator
+ HiLink asyStructure Structure
+ HiLink asyStorageClass StorageClass
+ HiLink asyExternal Include
+ HiLink asyDefine Macro
+ HiLink asyError Error
+ HiLink asyStatement Statement
+ HiLink asyType Type
+ HiLink asyConstant Constant
+ HiLink asyCommentString asyString
+ HiLink asyCommentCString asyString
+ HiLink asyCommentLString asyString
+ HiLink asyCommentLCString asyString
+ HiLink asyCommentSkip asyComment
+ HiLink asyString String
+ HiLink asyCString String
+ HiLink asyComment Comment
+ HiLink asySpecial SpecialChar
+ HiLink asyCSpecial SpecialChar
+ HiLink asyTodo Todo
+ HiLink asyPathSpec Statement
delcommand HiLink
endif
let b:current_syntax = "c"
-
-" vim: ts=8