1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
|
" Vim syntax file
" Language: Asymptote
" Maintainer: Andy Hammerlindl
" Last Change: 2005 Aug 23
" Hacked together from Bram Moolenaar's C syntax file, and Claudio Fleiner's
" Java syntax file.
" 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
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
"when wanted, highlight trailing white space
if exists("asy_space_errors")
if !exists("asy_no_trail_space_error")
syn match asySpaceError display excludenl "\s\+$"
endif
if !exists("asy_no_tab_space_error")
syn match asySpaceError display " \+\t"me=e-1
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 "[);]"
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
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
" "*/", 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
else
syn region asyCommentL start="//" skip="\\$" end="$" keepend contains=@asyCommentGroup,asySpaceError
syn region asyComment matchgroup=asyCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@asyCommentGroup,asyCommentStartError,asySpaceError
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
syn keyword asyStructure struct typedef
syn keyword asyStorageClass static public readable private explicit
syn keyword asyPathSpec and cycle controls tension atleast curl
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
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_asy_syn_inits")
if version < 508
let did_asy_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
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
delcommand HiLink
endif
let b:current_syntax = "c"
" vim: ts=8
|