1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: KixTart 95, Kix2001 Windows script language http://kixtart.org/ 3071d4279SBram Moolenaar" Maintainer: Richard Howarth <[email protected]> 4071d4279SBram Moolenaar" Last Change: 2003 May 11 5071d4279SBram Moolenaar" URL: http://www.howsoft.demon.co.uk/ 6071d4279SBram Moolenaar 7071d4279SBram Moolenaar" KixTart files identified by *.kix extension. 8071d4279SBram Moolenaar 9071d4279SBram Moolenaar" Amendment History: 10071d4279SBram Moolenaar" 26 April 2001: RMH 11071d4279SBram Moolenaar" Removed development comments from distro version 12071d4279SBram Moolenaar" Renamed "Kix*" to "kix*" for consistancy 13071d4279SBram Moolenaar" Changes made in preperation for VIM version 5.8/6.00 14071d4279SBram Moolenaar 15071d4279SBram Moolenaar" TODO: 16071d4279SBram Moolenaar" Handle arrays highlighting 17071d4279SBram Moolenaar" Handle object highlighting 18071d4279SBram Moolenaar" The next two may not be possible: 19071d4279SBram Moolenaar" Work out how to error too many "(", i.e. (() should be an error. 20071d4279SBram Moolenaar" Similarly, "if" without "endif" and similar constructs should error. 21071d4279SBram Moolenaar 2289bcfda6SBram Moolenaar" quit when a syntax file was already loaded 2389bcfda6SBram Moolenaarif exists("b:current_syntax") 24071d4279SBram Moolenaar finish 25071d4279SBram Moolenaarendif 26071d4279SBram Moolenaar 27071d4279SBram Moolenaarsyn case match 28071d4279SBram Moolenaarsyn keyword kixTODO TODO FIX XXX contained 29071d4279SBram Moolenaar 30071d4279SBram Moolenaar" Case insensitive language. 31071d4279SBram Moolenaarsyn case ignore 32071d4279SBram Moolenaar 33071d4279SBram Moolenaar" Kix statements 34071d4279SBram Moolenaarsyn match kixStatement "?" 35071d4279SBram Moolenaarsyn keyword kixStatement beep big break 36071d4279SBram Moolenaarsyn keyword kixStatement call cd cls color cookie1 copy 37071d4279SBram Moolenaarsyn keyword kixStatement del dim display 38071d4279SBram Moolenaarsyn keyword kixStatement exit 39071d4279SBram Moolenaarsyn keyword kixStatement flushkb 40071d4279SBram Moolenaarsyn keyword kixStatement get gets global go gosub goto 41071d4279SBram Moolenaarsyn keyword kixStatement md 42071d4279SBram Moolenaarsyn keyword kixStatement password play 43071d4279SBram Moolenaarsyn keyword kixStatement quit 44071d4279SBram Moolenaarsyn keyword kixStatement rd return run 45071d4279SBram Moolenaarsyn keyword kixStatement set setl setm settime shell sleep small 46071d4279SBram Moolenaarsyn keyword kixStatement use 47071d4279SBram Moolenaar 48071d4279SBram Moolenaar" Kix2001 49071d4279SBram Moolenaarsyn keyword kixStatement debug function endfunction redim 50071d4279SBram Moolenaar 51071d4279SBram Moolenaar" Simple variables 52071d4279SBram Moolenaarsyn match kixNotVar "\$\$\|@@\|%%" transparent contains=NONE 53071d4279SBram Moolenaarsyn match kixLocalVar "\$\w\+" 54071d4279SBram Moolenaarsyn match kixMacro "@\w\+" 55071d4279SBram Moolenaarsyn match kixEnvVar "%\w\+" 56071d4279SBram Moolenaar 57071d4279SBram Moolenaar" Destination labels 58071d4279SBram Moolenaarsyn match kixLabel ":\w\+\>" 59071d4279SBram Moolenaar 60071d4279SBram Moolenaar" Identify strings, trap unterminated strings 61071d4279SBram Moolenaarsyn match kixStringError +".*\|'.*+ 62071d4279SBram Moolenaarsyn region kixDoubleString oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar 63071d4279SBram Moolenaarsyn region kixSingleString oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar 64071d4279SBram Moolenaar 65071d4279SBram Moolenaar" Operators 66071d4279SBram Moolenaarsyn match kixOperator "+\|-\|\*\|/\|=\|&\||" 67071d4279SBram Moolenaarsyn keyword kixOperator and or 68071d4279SBram Moolenaar" Kix2001 69071d4279SBram Moolenaarsyn match kixOperator "==" 70071d4279SBram Moolenaarsyn keyword kixOperator not 71071d4279SBram Moolenaar 72071d4279SBram Moolenaar" Numeric constants 73071d4279SBram Moolenaarsyn match kixInteger "-\=\<\d\+\>" contains=NONE 74071d4279SBram Moolenaarsyn match kixFloat "-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE 75071d4279SBram Moolenaar 76071d4279SBram Moolenaar" Hex numeric constants 77071d4279SBram Moolenaarsyn match kixHex "\&\x\+\>" contains=NONE 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar" Other contants 80071d4279SBram Moolenaar" Kix2001 81071d4279SBram Moolenaarsyn keyword kixConstant on off 82071d4279SBram Moolenaar 83071d4279SBram Moolenaar" Comments 84071d4279SBram Moolenaarsyn match kixComment ";.*$" contains=kixTODO 85071d4279SBram Moolenaar 86071d4279SBram Moolenaar" Trap unmatched parenthesis 87071d4279SBram Moolenaarsyn match kixParenCloseError ")" 88071d4279SBram Moolenaarsyn region kixParen oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError 89071d4279SBram Moolenaar 90071d4279SBram Moolenaar" Functions (Builtin + UDF) 91071d4279SBram Moolenaarsyn match kixFunction "\w\+("he=e-1,me=e-1 contains=ALL 92071d4279SBram Moolenaar 93071d4279SBram Moolenaar" Trap unmatched brackets 94071d4279SBram Moolenaarsyn match kixBrackCloseError "\]" 95071d4279SBram Moolenaarsyn region kixBrack transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError 96071d4279SBram Moolenaar 97071d4279SBram Moolenaar" Clusters for ALLBUT shorthand 98071d4279SBram Moolenaarsyn cluster kixIfBut contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK 99071d4279SBram Moolenaarsyn cluster kixSelectBut contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK 100071d4279SBram Moolenaarsyn cluster kixDoBut contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK 101071d4279SBram Moolenaarsyn cluster kixWhileBut contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK 102071d4279SBram Moolenaarsyn cluster kixForEachBut contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK 103071d4279SBram Moolenaarsyn cluster kixForNextBut contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK 104071d4279SBram Moolenaar" Condtional construct errors. 105071d4279SBram Moolenaarsyn match kixIfError "\<if\>\|\<else\>\|\<endif\>" 106071d4279SBram Moolenaarsyn match kixIfOK contained "\<if\>\|\<else\>\|\<endif\>" 107071d4279SBram Moolenaarsyn region kixIf transparent matchgroup=kixIfOK start="\<if\>" end="\<endif\>" contains=ALLBUT,@kixIfBut 108071d4279SBram Moolenaarsyn match kixSelectError "\<select\>\|\<case\>\|\<endselect\>" 109071d4279SBram Moolenaarsyn match kixSelectOK contained "\<select\>\|\<case\>\|\<endselect\>" 110071d4279SBram Moolenaarsyn region kixSelect transparent matchgroup=kixSelectOK start="\<select\>" end="\<endselect\>" contains=ALLBUT,@kixSelectBut 111071d4279SBram Moolenaar 112071d4279SBram Moolenaar" Program control constructs. 113071d4279SBram Moolenaarsyn match kixDoError "\<do\>\|\<until\>" 114071d4279SBram Moolenaarsyn match kixDoOK contained "\<do\>\|\<until\>" 115071d4279SBram Moolenaarsyn region kixDo transparent matchgroup=kixDoOK start="\<do\>" end="\<until\>" contains=ALLBUT,@kixDoBut 116071d4279SBram Moolenaarsyn match kixWhileError "\<while\>\|\<loop\>" 117071d4279SBram Moolenaarsyn match kixWhileOK contained "\<while\>\|\<loop\>" 118071d4279SBram Moolenaarsyn region kixWhile transparent matchgroup=kixWhileOK start="\<while\>" end="\<loop\>" contains=ALLBUT,@kixWhileBut 119071d4279SBram Moolenaarsyn match kixForNextError "\<for\>\|\<to\>\|\<step\>\|\<next\>" 120071d4279SBram Moolenaarsyn match kixForNextOK contained "\<for\>\|\<to\>\|\<step\>\|\<next\>" 121071d4279SBram Moolenaarsyn region kixForNext transparent matchgroup=kixForNextOK start="\<for\>" end="\<next\>" contains=ALLBUT,@kixForBut 122071d4279SBram Moolenaarsyn match kixForEachError "\<for each\>\|\<in\>\|\<next\>" 123071d4279SBram Moolenaarsyn match kixForEachOK contained "\<for each\>\|\<in\>\|\<next\>" 124071d4279SBram Moolenaarsyn region kixForEach transparent matchgroup=kixForEachOK start="\<for each\>" end="\<next\>" contains=ALLBUT,@kixForEachBut 125071d4279SBram Moolenaar 126071d4279SBram Moolenaar" Expressions 127071d4279SBram Moolenaarsyn match kixExpression "<\|>\|<=\|>=\|<>" 128071d4279SBram Moolenaar 129071d4279SBram Moolenaar 130071d4279SBram Moolenaar" Default highlighting. 13189bcfda6SBram Moolenaar" Set default highlight only if it doesn't already have a value. 132071d4279SBram Moolenaar 133*f37506f6SBram Moolenaarhi def link kixDoubleString String 134*f37506f6SBram Moolenaarhi def link kixSingleString String 135*f37506f6SBram Moolenaarhi def link kixStatement Statement 136*f37506f6SBram Moolenaarhi def link kixRepeat Repeat 137*f37506f6SBram Moolenaarhi def link kixComment Comment 138*f37506f6SBram Moolenaarhi def link kixBuiltin Function 139*f37506f6SBram Moolenaarhi def link kixLocalVar Special 140*f37506f6SBram Moolenaarhi def link kixMacro Special 141*f37506f6SBram Moolenaarhi def link kixEnvVar Special 142*f37506f6SBram Moolenaarhi def link kixLabel Type 143*f37506f6SBram Moolenaarhi def link kixFunction Function 144*f37506f6SBram Moolenaarhi def link kixInteger Number 145*f37506f6SBram Moolenaarhi def link kixHex Number 146*f37506f6SBram Moolenaarhi def link kixFloat Number 147*f37506f6SBram Moolenaarhi def link kixOperator Operator 148*f37506f6SBram Moolenaarhi def link kixExpression Operator 149071d4279SBram Moolenaar 150*f37506f6SBram Moolenaarhi def link kixParenCloseError Error 151*f37506f6SBram Moolenaarhi def link kixBrackCloseError Error 152*f37506f6SBram Moolenaarhi def link kixStringError Error 153071d4279SBram Moolenaar 154*f37506f6SBram Moolenaarhi def link kixWhileError Error 155*f37506f6SBram Moolenaarhi def link kixWhileOK Conditional 156*f37506f6SBram Moolenaarhi def link kixDoError Error 157*f37506f6SBram Moolenaarhi def link kixDoOK Conditional 158*f37506f6SBram Moolenaarhi def link kixIfError Error 159*f37506f6SBram Moolenaarhi def link kixIfOK Conditional 160*f37506f6SBram Moolenaarhi def link kixSelectError Error 161*f37506f6SBram Moolenaarhi def link kixSelectOK Conditional 162*f37506f6SBram Moolenaarhi def link kixForNextError Error 163*f37506f6SBram Moolenaarhi def link kixForNextOK Conditional 164*f37506f6SBram Moolenaarhi def link kixForEachError Error 165*f37506f6SBram Moolenaarhi def link kixForEachOK Conditional 166071d4279SBram Moolenaar 167071d4279SBram Moolenaar 168071d4279SBram Moolenaarlet b:current_syntax = "kix" 169071d4279SBram Moolenaar 170071d4279SBram Moolenaar" vim: ts=8 sw=2 171