1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Icon 3071d4279SBram Moolenaar" Maintainer: Wendell Turner <[email protected]> 4071d4279SBram Moolenaar" URL: ftp://ftp.halcyon.com/pub/users/wturner/icon.vim 5071d4279SBram Moolenaar" Last Change: 2003 May 11 6071d4279SBram Moolenaar 789bcfda6SBram Moolenaar" quit when a syntax file was already loaded 889bcfda6SBram Moolenaarif exists("b:current_syntax") 9071d4279SBram Moolenaar finish 10071d4279SBram Moolenaarendif 11071d4279SBram Moolenaar 12071d4279SBram Moolenaarsyn keyword iconFunction abs acos any args asin atan bal 13071d4279SBram Moolenaarsyn keyword iconFunction callout center char chdir close collect copy 14071d4279SBram Moolenaarsyn keyword iconFunction cos cset delay delete detab display dtor 15071d4279SBram Moolenaarsyn keyword iconFunction entab errorclear exit exp find flush function 16071d4279SBram Moolenaarsyn keyword iconFunction get getch getche getenv iand icom image 17071d4279SBram Moolenaarsyn keyword iconFunction insert integer ior ishift ixor kbhit key 18071d4279SBram Moolenaarsyn keyword iconFunction left list loadfunc log many map match 19071d4279SBram Moolenaarsyn keyword iconFunction member move name numeric open ord pop 20071d4279SBram Moolenaarsyn keyword iconFunction pos proc pull push put read reads 21071d4279SBram Moolenaarsyn keyword iconFunction real remove rename repl reverse right rtod 22071d4279SBram Moolenaarsyn keyword iconFunction runerr save seek seq set sin sort 23071d4279SBram Moolenaarsyn keyword iconFunction sortf sqrt stop string system tab table 24071d4279SBram Moolenaarsyn keyword iconFunction tan trim type upto variable where write writes 25071d4279SBram Moolenaar 26071d4279SBram Moolenaar" Keywords 27071d4279SBram Moolenaarsyn match iconKeyword "&allocated" 28071d4279SBram Moolenaarsyn match iconKeyword "&ascii" 29071d4279SBram Moolenaarsyn match iconKeyword "&clock" 30071d4279SBram Moolenaarsyn match iconKeyword "&collections" 31071d4279SBram Moolenaarsyn match iconKeyword "&cset" 32071d4279SBram Moolenaarsyn match iconKeyword "¤t" 33071d4279SBram Moolenaarsyn match iconKeyword "&date" 34071d4279SBram Moolenaarsyn match iconKeyword "&dateline" 35071d4279SBram Moolenaarsyn match iconKeyword "&digits" 36071d4279SBram Moolenaarsyn match iconKeyword "&dump" 37071d4279SBram Moolenaarsyn match iconKeyword "&e" 38071d4279SBram Moolenaarsyn match iconKeyword "&error" 39071d4279SBram Moolenaarsyn match iconKeyword "&errornumber" 40071d4279SBram Moolenaarsyn match iconKeyword "&errortext" 41071d4279SBram Moolenaarsyn match iconKeyword "&errorvalue" 42071d4279SBram Moolenaarsyn match iconKeyword "&errout" 43071d4279SBram Moolenaarsyn match iconKeyword "&fail" 44071d4279SBram Moolenaarsyn match iconKeyword "&features" 45071d4279SBram Moolenaarsyn match iconKeyword "&file" 46071d4279SBram Moolenaarsyn match iconKeyword "&host" 47071d4279SBram Moolenaarsyn match iconKeyword "&input" 48071d4279SBram Moolenaarsyn match iconKeyword "&lcase" 49071d4279SBram Moolenaarsyn match iconKeyword "&letters" 50071d4279SBram Moolenaarsyn match iconKeyword "&level" 51071d4279SBram Moolenaarsyn match iconKeyword "&line" 52071d4279SBram Moolenaarsyn match iconKeyword "&main" 53071d4279SBram Moolenaarsyn match iconKeyword "&null" 54071d4279SBram Moolenaarsyn match iconKeyword "&output" 55071d4279SBram Moolenaarsyn match iconKeyword "&phi" 56071d4279SBram Moolenaarsyn match iconKeyword "&pi" 57071d4279SBram Moolenaarsyn match iconKeyword "&pos" 58071d4279SBram Moolenaarsyn match iconKeyword "&progname" 59071d4279SBram Moolenaarsyn match iconKeyword "&random" 60071d4279SBram Moolenaarsyn match iconKeyword "®ions" 61071d4279SBram Moolenaarsyn match iconKeyword "&source" 62071d4279SBram Moolenaarsyn match iconKeyword "&storage" 63071d4279SBram Moolenaarsyn match iconKeyword "&subject" 64071d4279SBram Moolenaarsyn match iconKeyword "&time" 65071d4279SBram Moolenaarsyn match iconKeyword "&trace" 66071d4279SBram Moolenaarsyn match iconKeyword "&ucase" 67071d4279SBram Moolenaarsyn match iconKeyword "&version" 68071d4279SBram Moolenaar 69071d4279SBram Moolenaar" Reserved words 70071d4279SBram Moolenaarsyn keyword iconReserved break by case create default do 71071d4279SBram Moolenaarsyn keyword iconReserved else end every fail if 72071d4279SBram Moolenaarsyn keyword iconReserved initial link next not of 73071d4279SBram Moolenaarsyn keyword iconReserved procedure repeat return suspend 74071d4279SBram Moolenaarsyn keyword iconReserved then to until while 75071d4279SBram Moolenaar 76071d4279SBram Moolenaar" Storage class reserved words 77071d4279SBram Moolenaarsyn keyword iconStorageClass global static local record 78071d4279SBram Moolenaar 79071d4279SBram Moolenaarsyn keyword iconTodo contained TODO FIXME XXX BUG 80071d4279SBram Moolenaar 81071d4279SBram Moolenaar" String and Character constants 82071d4279SBram Moolenaar" Highlight special characters (those which have a backslash) differently 83071d4279SBram Moolenaarsyn match iconSpecial contained "\\x\x\{2}\|\\\o\{3\}\|\\[bdeflnrtv\"\'\\]\|\\^c[a-zA-Z0-9]\|\\$" 84071d4279SBram Moolenaarsyn region iconString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=iconSpecial 85071d4279SBram Moolenaarsyn region iconCset start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=iconSpecial 86071d4279SBram Moolenaarsyn match iconCharacter "'[^\\]'" 87071d4279SBram Moolenaar 88071d4279SBram Moolenaar" not sure about these 89071d4279SBram Moolenaar"syn match iconSpecialCharacter "'\\[bdeflnrtv]'" 90071d4279SBram Moolenaar"syn match iconSpecialCharacter "'\\\o\{3\}'" 91071d4279SBram Moolenaar"syn match iconSpecialCharacter "'\\x\x\{2}'" 92071d4279SBram Moolenaar"syn match iconSpecialCharacter "'\\^c\[a-zA-Z0-9]'" 93071d4279SBram Moolenaar 94071d4279SBram Moolenaar"when wanted, highlight trailing white space 95071d4279SBram Moolenaarif exists("icon_space_errors") 96071d4279SBram Moolenaar syn match iconSpaceError "\s*$" 97071d4279SBram Moolenaar syn match iconSpaceError " \+\t"me=e-1 98071d4279SBram Moolenaarendif 99071d4279SBram Moolenaar 100071d4279SBram Moolenaar"catch errors caused by wrong parenthesis 101071d4279SBram Moolenaarsyn cluster iconParenGroup contains=iconParenError,iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField 102071d4279SBram Moolenaar 103071d4279SBram Moolenaarsyn region iconParen transparent start='(' end=')' contains=ALLBUT,@iconParenGroup 104071d4279SBram Moolenaarsyn match iconParenError ")" 105071d4279SBram Moolenaarsyn match iconInParen contained "[{}]" 106071d4279SBram Moolenaar 107071d4279SBram Moolenaar 108071d4279SBram Moolenaarsyn case ignore 109071d4279SBram Moolenaar 110071d4279SBram Moolenaar"integer number, or floating point number without a dot 111071d4279SBram Moolenaarsyn match iconNumber "\<\d\+\>" 112071d4279SBram Moolenaar 113071d4279SBram Moolenaar"floating point number, with dot, optional exponent 114071d4279SBram Moolenaarsyn match iconFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" 115071d4279SBram Moolenaar 116071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent 117071d4279SBram Moolenaarsyn match iconFloat "\.\d\+\(e[-+]\=\d\+\)\=\>" 118071d4279SBram Moolenaar 119071d4279SBram Moolenaar"floating point number, without dot, with exponent 120071d4279SBram Moolenaarsyn match iconFloat "\<\d\+e[-+]\=\d\+\>" 121071d4279SBram Moolenaar 122071d4279SBram Moolenaar"radix number 123071d4279SBram Moolenaarsyn match iconRadix "\<\d\{1,2}[rR][a-zA-Z0-9]\+\>" 124071d4279SBram Moolenaar 125071d4279SBram Moolenaar 126071d4279SBram Moolenaar" syn match iconIdentifier "\<[a-z_][a-z0-9_]*\>" 127071d4279SBram Moolenaar 128071d4279SBram Moolenaarsyn case match 129071d4279SBram Moolenaar 130071d4279SBram Moolenaar" Comment 131071d4279SBram Moolenaarsyn match iconComment "#.*" contains=iconTodo,iconSpaceError 132071d4279SBram Moolenaar 133071d4279SBram Moolenaarsyn region iconPreCondit start="^\s*$\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=iconComment,iconString,iconCharacter,iconNumber,iconCommentError,iconSpaceError 134071d4279SBram Moolenaar 135071d4279SBram Moolenaarsyn region iconIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 136071d4279SBram Moolenaarsyn match iconIncluded contained "<[^>]*>" 137071d4279SBram Moolenaarsyn match iconInclude "^\s*$\s*include\>\s*["<]" contains=iconIncluded 138071d4279SBram Moolenaar"syn match iconLineSkip "\\$" 139071d4279SBram Moolenaar 140071d4279SBram Moolenaarsyn cluster iconPreProcGroup contains=iconPreCondit,iconIncluded,iconInclude,iconDefine,iconInParen,iconUserLabel 141071d4279SBram Moolenaar 142071d4279SBram Moolenaarsyn region iconDefine start="^\s*$\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@iconPreProcGroup 143071d4279SBram Moolenaar 144071d4279SBram Moolenaar"wt:syn region iconPreProc "start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" "end="$" contains=ALLBUT,@iconPreProcGroup 145071d4279SBram Moolenaar 146071d4279SBram Moolenaar" Highlight User Labels 147071d4279SBram Moolenaar 148071d4279SBram Moolenaar" syn cluster iconMultiGroup contains=iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField 149071d4279SBram Moolenaar 150071d4279SBram Moolenaarif !exists("icon_minlines") 151071d4279SBram Moolenaar let icon_minlines = 15 152071d4279SBram Moolenaarendif 153071d4279SBram Moolenaarexec "syn sync ccomment iconComment minlines=" . icon_minlines 154071d4279SBram Moolenaar 155071d4279SBram Moolenaar" Define the default highlighting. 156071d4279SBram Moolenaar 15789bcfda6SBram Moolenaar" Only when an item doesn't have highlighting 158071d4279SBram Moolenaar 159071d4279SBram Moolenaar" The default methods for highlighting. Can be overridden later 160071d4279SBram Moolenaar 161*f37506f6SBram Moolenaar" hi def link iconSpecialCharacter iconSpecial 162071d4279SBram Moolenaar 163*f37506f6SBram Moolenaarhi def link iconOctalError iconError 164*f37506f6SBram Moolenaarhi def link iconParenError iconError 165*f37506f6SBram Moolenaarhi def link iconInParen iconError 166*f37506f6SBram Moolenaarhi def link iconCommentError iconError 167*f37506f6SBram Moolenaarhi def link iconSpaceError iconError 168*f37506f6SBram Moolenaarhi def link iconCommentError iconError 169*f37506f6SBram Moolenaarhi def link iconIncluded iconString 170*f37506f6SBram Moolenaarhi def link iconCommentString iconString 171*f37506f6SBram Moolenaarhi def link iconComment2String iconString 172*f37506f6SBram Moolenaarhi def link iconCommentSkip iconComment 173071d4279SBram Moolenaar 174*f37506f6SBram Moolenaarhi def link iconUserLabel Label 175*f37506f6SBram Moolenaarhi def link iconCharacter Character 176*f37506f6SBram Moolenaarhi def link iconNumber Number 177*f37506f6SBram Moolenaarhi def link iconRadix Number 178*f37506f6SBram Moolenaarhi def link iconFloat Float 179*f37506f6SBram Moolenaarhi def link iconInclude Include 180*f37506f6SBram Moolenaarhi def link iconPreProc PreProc 181*f37506f6SBram Moolenaarhi def link iconDefine Macro 182*f37506f6SBram Moolenaarhi def link iconError Error 183*f37506f6SBram Moolenaarhi def link iconStatement Statement 184*f37506f6SBram Moolenaarhi def link iconPreCondit PreCondit 185*f37506f6SBram Moolenaarhi def link iconString String 186*f37506f6SBram Moolenaarhi def link iconCset String 187*f37506f6SBram Moolenaarhi def link iconComment Comment 188*f37506f6SBram Moolenaarhi def link iconSpecial SpecialChar 189*f37506f6SBram Moolenaarhi def link iconTodo Todo 190*f37506f6SBram Moolenaarhi def link iconStorageClass StorageClass 191*f37506f6SBram Moolenaarhi def link iconFunction Statement 192*f37506f6SBram Moolenaarhi def link iconReserved Label 193*f37506f6SBram Moolenaarhi def link iconKeyword Operator 194071d4279SBram Moolenaar 195*f37506f6SBram Moolenaar"hi def link iconIdentifier Identifier 196071d4279SBram Moolenaar 197071d4279SBram Moolenaar 198071d4279SBram Moolenaarlet b:current_syntax = "icon" 199071d4279SBram Moolenaar 200