1" Vim syntax file 2" Language: KixTart 95, Kix2001 Windows script language http://kixtart.org/ 3" Maintainer: Richard Howarth <[email protected]> 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" quit when a syntax file was already loaded 23if exists("b:current_syntax") 24 finish 25endif 26 27syn case match 28syn keyword kixTODO TODO FIX XXX contained 29 30" Case insensitive language. 31syn case ignore 32 33" Kix statements 34syn match kixStatement "?" 35syn keyword kixStatement beep big break 36syn keyword kixStatement call cd cls color cookie1 copy 37syn keyword kixStatement del dim display 38syn keyword kixStatement exit 39syn keyword kixStatement flushkb 40syn keyword kixStatement get gets global go gosub goto 41syn keyword kixStatement md 42syn keyword kixStatement password play 43syn keyword kixStatement quit 44syn keyword kixStatement rd return run 45syn keyword kixStatement set setl setm settime shell sleep small 46syn keyword kixStatement use 47 48" Kix2001 49syn keyword kixStatement debug function endfunction redim 50 51" Simple variables 52syn match kixNotVar "\$\$\|@@\|%%" transparent contains=NONE 53syn match kixLocalVar "\$\w\+" 54syn match kixMacro "@\w\+" 55syn match kixEnvVar "%\w\+" 56 57" Destination labels 58syn match kixLabel ":\w\+\>" 59 60" Identify strings, trap unterminated strings 61syn match kixStringError +".*\|'.*+ 62syn region kixDoubleString oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar 63syn region kixSingleString oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar 64 65" Operators 66syn match kixOperator "+\|-\|\*\|/\|=\|&\||" 67syn keyword kixOperator and or 68" Kix2001 69syn match kixOperator "==" 70syn keyword kixOperator not 71 72" Numeric constants 73syn match kixInteger "-\=\<\d\+\>" contains=NONE 74syn match kixFloat "-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE 75 76" Hex numeric constants 77syn match kixHex "\&\x\+\>" contains=NONE 78 79" Other contants 80" Kix2001 81syn keyword kixConstant on off 82 83" Comments 84syn match kixComment ";.*$" contains=kixTODO 85 86" Trap unmatched parenthesis 87syn match kixParenCloseError ")" 88syn region kixParen oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError 89 90" Functions (Builtin + UDF) 91syn match kixFunction "\w\+("he=e-1,me=e-1 contains=ALL 92 93" Trap unmatched brackets 94syn match kixBrackCloseError "\]" 95syn region kixBrack transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError 96 97" Clusters for ALLBUT shorthand 98syn cluster kixIfBut contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK 99syn cluster kixSelectBut contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK 100syn cluster kixDoBut contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK 101syn cluster kixWhileBut contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK 102syn cluster kixForEachBut contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK 103syn cluster kixForNextBut contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK 104" Condtional construct errors. 105syn match kixIfError "\<if\>\|\<else\>\|\<endif\>" 106syn match kixIfOK contained "\<if\>\|\<else\>\|\<endif\>" 107syn region kixIf transparent matchgroup=kixIfOK start="\<if\>" end="\<endif\>" contains=ALLBUT,@kixIfBut 108syn match kixSelectError "\<select\>\|\<case\>\|\<endselect\>" 109syn match kixSelectOK contained "\<select\>\|\<case\>\|\<endselect\>" 110syn region kixSelect transparent matchgroup=kixSelectOK start="\<select\>" end="\<endselect\>" contains=ALLBUT,@kixSelectBut 111 112" Program control constructs. 113syn match kixDoError "\<do\>\|\<until\>" 114syn match kixDoOK contained "\<do\>\|\<until\>" 115syn region kixDo transparent matchgroup=kixDoOK start="\<do\>" end="\<until\>" contains=ALLBUT,@kixDoBut 116syn match kixWhileError "\<while\>\|\<loop\>" 117syn match kixWhileOK contained "\<while\>\|\<loop\>" 118syn region kixWhile transparent matchgroup=kixWhileOK start="\<while\>" end="\<loop\>" contains=ALLBUT,@kixWhileBut 119syn match kixForNextError "\<for\>\|\<to\>\|\<step\>\|\<next\>" 120syn match kixForNextOK contained "\<for\>\|\<to\>\|\<step\>\|\<next\>" 121syn region kixForNext transparent matchgroup=kixForNextOK start="\<for\>" end="\<next\>" contains=ALLBUT,@kixForBut 122syn match kixForEachError "\<for each\>\|\<in\>\|\<next\>" 123syn match kixForEachOK contained "\<for each\>\|\<in\>\|\<next\>" 124syn region kixForEach transparent matchgroup=kixForEachOK start="\<for each\>" end="\<next\>" contains=ALLBUT,@kixForEachBut 125 126" Expressions 127syn match kixExpression "<\|>\|<=\|>=\|<>" 128 129 130" Default highlighting. 131" Set default highlight only if it doesn't already have a value. 132 133hi def link kixDoubleString String 134hi def link kixSingleString String 135hi def link kixStatement Statement 136hi def link kixRepeat Repeat 137hi def link kixComment Comment 138hi def link kixBuiltin Function 139hi def link kixLocalVar Special 140hi def link kixMacro Special 141hi def link kixEnvVar Special 142hi def link kixLabel Type 143hi def link kixFunction Function 144hi def link kixInteger Number 145hi def link kixHex Number 146hi def link kixFloat Number 147hi def link kixOperator Operator 148hi def link kixExpression Operator 149 150hi def link kixParenCloseError Error 151hi def link kixBrackCloseError Error 152hi def link kixStringError Error 153 154hi def link kixWhileError Error 155hi def link kixWhileOK Conditional 156hi def link kixDoError Error 157hi def link kixDoOK Conditional 158hi def link kixIfError Error 159hi def link kixIfOK Conditional 160hi def link kixSelectError Error 161hi def link kixSelectOK Conditional 162hi def link kixForNextError Error 163hi def link kixForNextOK Conditional 164hi def link kixForEachError Error 165hi def link kixForEachOK Conditional 166 167 168let b:current_syntax = "kix" 169 170" vim: ts=8 sw=2 171