1" Vim syntax file 2" Language: KixTart 95, Kix2001 Windows script language http://kixtart.org/ 3" Maintainer: Richard Howarth <rhowarth@sgb.co.uk> 4" Last Change: 2003 May 11 5" URL: http://www.howsoft.demon.co.uk/ 6 7" KixTart files identified by *.kix extension. 8 9" Amendment History: 10" 26 April 2001: RMH 11" Removed development comments from distro version 12" Renamed "Kix*" to "kix*" for consistancy 13" Changes made in preperation for VIM version 5.8/6.00 14 15" TODO: 16" Handle arrays highlighting 17" Handle object highlighting 18" The next two may not be possible: 19" Work out how to error too many "(", i.e. (() should be an error. 20" Similarly, "if" without "endif" and similar constructs should error. 21 22" Clear legacy syntax rules for version 5.x, exit if already processed for version 6+ 23if version < 600 24 syn clear 25elseif exists("b:current_syntax") 26 finish 27endif 28 29syn case match 30syn keyword kixTODO TODO FIX XXX contained 31 32" Case insensitive language. 33syn case ignore 34 35" Kix statements 36syn match kixStatement "?" 37syn keyword kixStatement beep big break 38syn keyword kixStatement call cd cls color cookie1 copy 39syn keyword kixStatement del dim display 40syn keyword kixStatement exit 41syn keyword kixStatement flushkb 42syn keyword kixStatement get gets global go gosub goto 43syn keyword kixStatement md 44syn keyword kixStatement password play 45syn keyword kixStatement quit 46syn keyword kixStatement rd return run 47syn keyword kixStatement set setl setm settime shell sleep small 48syn keyword kixStatement use 49 50" Kix2001 51syn keyword kixStatement debug function endfunction redim 52 53" Simple variables 54syn match kixNotVar "\$\$\|@@\|%%" transparent contains=NONE 55syn match kixLocalVar "\$\w\+" 56syn match kixMacro "@\w\+" 57syn match kixEnvVar "%\w\+" 58 59" Destination labels 60syn match kixLabel ":\w\+\>" 61 62" Identify strings, trap unterminated strings 63syn match kixStringError +".*\|'.*+ 64syn region kixDoubleString oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar 65syn region kixSingleString oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar 66 67" Operators 68syn match kixOperator "+\|-\|\*\|/\|=\|&\||" 69syn keyword kixOperator and or 70" Kix2001 71syn match kixOperator "==" 72syn keyword kixOperator not 73 74" Numeric constants 75syn match kixInteger "-\=\<\d\+\>" contains=NONE 76syn match kixFloat "-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE 77 78" Hex numeric constants 79syn match kixHex "\&\x\+\>" contains=NONE 80 81" Other contants 82" Kix2001 83syn keyword kixConstant on off 84 85" Comments 86syn match kixComment ";.*$" contains=kixTODO 87 88" Trap unmatched parenthesis 89syn match kixParenCloseError ")" 90syn region kixParen oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError 91 92" Functions (Builtin + UDF) 93syn match kixFunction "\w\+("he=e-1,me=e-1 contains=ALL 94 95" Trap unmatched brackets 96syn match kixBrackCloseError "\]" 97syn region kixBrack transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError 98 99" Clusters for ALLBUT shorthand 100syn cluster kixIfBut contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK 101syn cluster kixSelectBut contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK 102syn cluster kixDoBut contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK 103syn cluster kixWhileBut contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK 104syn cluster kixForEachBut contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK 105syn cluster kixForNextBut contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK 106" Condtional construct errors. 107syn match kixIfError "\<if\>\|\<else\>\|\<endif\>" 108syn match kixIfOK contained "\<if\>\|\<else\>\|\<endif\>" 109syn region kixIf transparent matchgroup=kixIfOK start="\<if\>" end="\<endif\>" contains=ALLBUT,@kixIfBut 110syn match kixSelectError "\<select\>\|\<case\>\|\<endselect\>" 111syn match kixSelectOK contained "\<select\>\|\<case\>\|\<endselect\>" 112syn region kixSelect transparent matchgroup=kixSelectOK start="\<select\>" end="\<endselect\>" contains=ALLBUT,@kixSelectBut 113 114" Program control constructs. 115syn match kixDoError "\<do\>\|\<until\>" 116syn match kixDoOK contained "\<do\>\|\<until\>" 117syn region kixDo transparent matchgroup=kixDoOK start="\<do\>" end="\<until\>" contains=ALLBUT,@kixDoBut 118syn match kixWhileError "\<while\>\|\<loop\>" 119syn match kixWhileOK contained "\<while\>\|\<loop\>" 120syn region kixWhile transparent matchgroup=kixWhileOK start="\<while\>" end="\<loop\>" contains=ALLBUT,@kixWhileBut 121syn match kixForNextError "\<for\>\|\<to\>\|\<step\>\|\<next\>" 122syn match kixForNextOK contained "\<for\>\|\<to\>\|\<step\>\|\<next\>" 123syn region kixForNext transparent matchgroup=kixForNextOK start="\<for\>" end="\<next\>" contains=ALLBUT,@kixForBut 124syn match kixForEachError "\<for each\>\|\<in\>\|\<next\>" 125syn match kixForEachOK contained "\<for each\>\|\<in\>\|\<next\>" 126syn region kixForEach transparent matchgroup=kixForEachOK start="\<for each\>" end="\<next\>" contains=ALLBUT,@kixForEachBut 127 128" Expressions 129syn match kixExpression "<\|>\|<=\|>=\|<>" 130 131 132" Default highlighting. 133" Version < 5.8 set default highlight if file not already processed. 134" Version >= 5.8 set default highlight only if it doesn't already have a value. 135if version > 508 || !exists("did_kix_syn_inits") 136 if version < 508 137 let did_kix_syn_inits=1 138 command -nargs=+ HiLink hi link <args> 139 else 140 command -nargs=+ HiLink hi def link <args> 141 endif 142 143 HiLink kixDoubleString String 144 HiLink kixSingleString String 145 HiLink kixStatement Statement 146 HiLink kixRepeat Repeat 147 HiLink kixComment Comment 148 HiLink kixBuiltin Function 149 HiLink kixLocalVar Special 150 HiLink kixMacro Special 151 HiLink kixEnvVar Special 152 HiLink kixLabel Type 153 HiLink kixFunction Function 154 HiLink kixInteger Number 155 HiLink kixHex Number 156 HiLink kixFloat Number 157 HiLink kixOperator Operator 158 HiLink kixExpression Operator 159 160 HiLink kixParenCloseError Error 161 HiLink kixBrackCloseError Error 162 HiLink kixStringError Error 163 164 HiLink kixWhileError Error 165 HiLink kixWhileOK Conditional 166 HiLink kixDoError Error 167 HiLink kixDoOK Conditional 168 HiLink kixIfError Error 169 HiLink kixIfOK Conditional 170 HiLink kixSelectError Error 171 HiLink kixSelectOK Conditional 172 HiLink kixForNextError Error 173 HiLink kixForNextOK Conditional 174 HiLink kixForEachError Error 175 HiLink kixForEachOK Conditional 176 177 delcommand HiLink 178endif 179 180let b:current_syntax = "kix" 181 182" vim: ts=8 sw=2 183