| " Vim syntax file |
| " Language: KixTart 95, Kix2001 Windows script language http://kixtart.org/ |
| " Maintainer: Richard Howarth <rhowarth@sgb.co.uk> |
| " Last Change: 2003 May 11 |
| " URL: http://www.howsoft.demon.co.uk/ |
| |
| " KixTart files identified by *.kix extension. |
| |
| " Amendment History: |
| " 26 April 2001: RMH |
| " Removed development comments from distro version |
| " Renamed "Kix*" to "kix*" for consistancy |
| " Changes made in preperation for VIM version 5.8/6.00 |
| |
| " TODO: |
| " Handle arrays highlighting |
| " Handle object highlighting |
| " The next two may not be possible: |
| " Work out how to error too many "(", i.e. (() should be an error. |
| " Similarly, "if" without "endif" and similar constructs should error. |
| |
| " quit when a syntax file was already loaded |
| if exists("b:current_syntax") |
| finish |
| endif |
| |
| syn case match |
| syn keyword kixTODO TODO FIX XXX contained |
| |
| " Case insensitive language. |
| syn case ignore |
| |
| " Kix statements |
| syn match kixStatement "?" |
| syn keyword kixStatement beep big break |
| syn keyword kixStatement call cd cls color cookie1 copy |
| syn keyword kixStatement del dim display |
| syn keyword kixStatement exit |
| syn keyword kixStatement flushkb |
| syn keyword kixStatement get gets global go gosub goto |
| syn keyword kixStatement md |
| syn keyword kixStatement password play |
| syn keyword kixStatement quit |
| syn keyword kixStatement rd return run |
| syn keyword kixStatement set setl setm settime shell sleep small |
| syn keyword kixStatement use |
| |
| " Kix2001 |
| syn keyword kixStatement debug function endfunction redim |
| |
| " Simple variables |
| syn match kixNotVar "\$\$\|@@\|%%" transparent contains=NONE |
| syn match kixLocalVar "\$\w\+" |
| syn match kixMacro "@\w\+" |
| syn match kixEnvVar "%\w\+" |
| |
| " Destination labels |
| syn match kixLabel ":\w\+\>" |
| |
| " Identify strings, trap unterminated strings |
| syn match kixStringError +".*\|'.*+ |
| syn region kixDoubleString oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar |
| syn region kixSingleString oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar |
| |
| " Operators |
| syn match kixOperator "+\|-\|\*\|/\|=\|&\||" |
| syn keyword kixOperator and or |
| " Kix2001 |
| syn match kixOperator "==" |
| syn keyword kixOperator not |
| |
| " Numeric constants |
| syn match kixInteger "-\=\<\d\+\>" contains=NONE |
| syn match kixFloat "-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE |
| |
| " Hex numeric constants |
| syn match kixHex "\&\x\+\>" contains=NONE |
| |
| " Other contants |
| " Kix2001 |
| syn keyword kixConstant on off |
| |
| " Comments |
| syn match kixComment ";.*$" contains=kixTODO |
| |
| " Trap unmatched parenthesis |
| syn match kixParenCloseError ")" |
| syn region kixParen oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError |
| |
| " Functions (Builtin + UDF) |
| syn match kixFunction "\w\+("he=e-1,me=e-1 contains=ALL |
| |
| " Trap unmatched brackets |
| syn match kixBrackCloseError "\]" |
| syn region kixBrack transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError |
| |
| " Clusters for ALLBUT shorthand |
| syn cluster kixIfBut contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK |
| syn cluster kixSelectBut contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK |
| syn cluster kixDoBut contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK |
| syn cluster kixWhileBut contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK |
| syn cluster kixForEachBut contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK |
| syn cluster kixForNextBut contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK |
| " Condtional construct errors. |
| syn match kixIfError "\<if\>\|\<else\>\|\<endif\>" |
| syn match kixIfOK contained "\<if\>\|\<else\>\|\<endif\>" |
| syn region kixIf transparent matchgroup=kixIfOK start="\<if\>" end="\<endif\>" contains=ALLBUT,@kixIfBut |
| syn match kixSelectError "\<select\>\|\<case\>\|\<endselect\>" |
| syn match kixSelectOK contained "\<select\>\|\<case\>\|\<endselect\>" |
| syn region kixSelect transparent matchgroup=kixSelectOK start="\<select\>" end="\<endselect\>" contains=ALLBUT,@kixSelectBut |
| |
| " Program control constructs. |
| syn match kixDoError "\<do\>\|\<until\>" |
| syn match kixDoOK contained "\<do\>\|\<until\>" |
| syn region kixDo transparent matchgroup=kixDoOK start="\<do\>" end="\<until\>" contains=ALLBUT,@kixDoBut |
| syn match kixWhileError "\<while\>\|\<loop\>" |
| syn match kixWhileOK contained "\<while\>\|\<loop\>" |
| syn region kixWhile transparent matchgroup=kixWhileOK start="\<while\>" end="\<loop\>" contains=ALLBUT,@kixWhileBut |
| syn match kixForNextError "\<for\>\|\<to\>\|\<step\>\|\<next\>" |
| syn match kixForNextOK contained "\<for\>\|\<to\>\|\<step\>\|\<next\>" |
| syn region kixForNext transparent matchgroup=kixForNextOK start="\<for\>" end="\<next\>" contains=ALLBUT,@kixForBut |
| syn match kixForEachError "\<for each\>\|\<in\>\|\<next\>" |
| syn match kixForEachOK contained "\<for each\>\|\<in\>\|\<next\>" |
| syn region kixForEach transparent matchgroup=kixForEachOK start="\<for each\>" end="\<next\>" contains=ALLBUT,@kixForEachBut |
| |
| " Expressions |
| syn match kixExpression "<\|>\|<=\|>=\|<>" |
| |
| |
| " Default highlighting. |
| " Set default highlight only if it doesn't already have a value. |
| |
| hi def link kixDoubleString String |
| hi def link kixSingleString String |
| hi def link kixStatement Statement |
| hi def link kixRepeat Repeat |
| hi def link kixComment Comment |
| hi def link kixBuiltin Function |
| hi def link kixLocalVar Special |
| hi def link kixMacro Special |
| hi def link kixEnvVar Special |
| hi def link kixLabel Type |
| hi def link kixFunction Function |
| hi def link kixInteger Number |
| hi def link kixHex Number |
| hi def link kixFloat Number |
| hi def link kixOperator Operator |
| hi def link kixExpression Operator |
| |
| hi def link kixParenCloseError Error |
| hi def link kixBrackCloseError Error |
| hi def link kixStringError Error |
| |
| hi def link kixWhileError Error |
| hi def link kixWhileOK Conditional |
| hi def link kixDoError Error |
| hi def link kixDoOK Conditional |
| hi def link kixIfError Error |
| hi def link kixIfOK Conditional |
| hi def link kixSelectError Error |
| hi def link kixSelectOK Conditional |
| hi def link kixForNextError Error |
| hi def link kixForNextOK Conditional |
| hi def link kixForEachError Error |
| hi def link kixForEachOK Conditional |
| |
| |
| let b:current_syntax = "kix" |
| |
| " vim: ts=8 sw=2 |